我有一個可怕的數據庫模型(在MySQL中,雖然我認爲不重要),別人設計,所以我堅持它,但仍要與實體框架使用它:配置許多與實體框架的一對一關係代碼首先和流暢的API
數據庫
項目
ASSET_ID* ASSET_NAME FIELDS_ID
1 Cat 1
2 Dog 2
3 Fish 3
ItemFields
ID* CUSTOMFIELD1ID CUSTOMFIELD2ID CUSTOMFIELD3ID
1 1001 1002 1003
2 1004 1005 1006
3 1007 1008 1009
場
ID* STRINGVAL
1001 Meow Mix
1002 House
1003 5lbs
1004 Kibble
1005 Yard
1006 30lbs
1007 Fish Food
1008 Tank
1009 0.5 ounces
*指示表的PK
目標
最後,我想配置的關係,這樣我就可以得到這樣的自定義數據:
Item item = GetItem(1);
item.Food.ToString(); // Output: meow mix
item.Place.ToString(); // Output: house
item.Weight.ToString(); // Output: 5 lbs
...等。但老實說,我想在這一點上解決這個:
Item item = GetItem(1);
Item.ItemFields.CustomField3.Value // Output: 5 lbs
Item item = GetItem(2);
Item.ItemFields.CustomField2.Value // Output: Yard
Item item = GetItem(3);
Item.ItemFields.CustomField1.Value // Output: Fish Food
解決方案迄今
到目前爲止,我有這樣的:
一比一:商品 - ItemFields
modelBuilder.Entity<Item>()
.HasRequired(x => x.ItemFields)
.WithRequiredPrincipal(y => y.Item);
B ut將ItemFields.CustomField1ID映射到Field.ID?
是否可以使用EF代碼首先配置這樣的關係?我很困惑這是一對一還是一對多......我認爲它實際上是許多一對一(如果有意義的話)。
有什麼建議嗎?
我喜歡這樣做。問題是我堅持現有的數據庫結構,不能改變它。相反,我需要模仿我的方式...... – Mike