我有一個應用程序在數據庫中實現單例模式,並且遇到了很多問題。實體框架中的單例數據庫模式
我已經得到了下表,SingletonTable
+-------------+-------+------------+
| Column Name | Type | Allow Null |
+-------------+-------+------------+
| Id | Int | No |
| VarType | Int | No |
| TypeARef | Int | Yes |
| TypeBRef | Int | Yes |
+-------------+-------+------------+
在EF,這被分解成兩個具體類型,類型A和類型B。 TypeARef在TypeA上,TypeBRef在TypeB上,VarType是鑑別器。 (VariableType,TypeARef,TypeBRef)上有一個唯一索引。單例模式的想法是我們在數據庫中只有一行給定值元組,所以無論何時我們添加對SingletonTable的引用,我們首先檢查該行是否存在,如果存在,我們返回如果沒有,我們創建該行並返回對新創建行的引用。我已經將這個抽象成一個方法GetSingleton。
的問題是每當我使用的方法GetSingleton,我得到的follwoing例外:
試驗方法UnitTests.CreateBasicData.CreateFTIData拋出異常:System.InvalidOperationException:對象不能被添加到EntityCollection或的EntityReference 。附接到一個ObjectContext的一個對象不能被添加到不與源對象相關聯的EntityCollection或的EntityReference
我使用它作爲這樣
var newRow = new SomeType
{
singletonValue = GetSingleton(new TypeB{ TypeBRef = Foo })
}
這個問題似乎是我不能將尚未包含在數據上下文中的引用添加到數據上下文中的某個引用。這是正確的嗎?我如何解決這個限制?
謝謝, 羅伊