1
考慮以下模型:EF5代碼首先導航屬性多酒店的地圖,枚舉值
public class Item
{
public int Id { get; set; }
public ICollection<File> Attachments { get; set; }
}
public class File
{
public int Id { get; set; }
public ObjectType ObjectType { get; set; } // enum stored as INT
public int ObjectId { get; set; }
}
會如何使用流利的API,因此產生的SQL正確加入我描述了Item.Attachments
導航屬性,如:
SELECT ... FROM Items a
LEFT JOIN Files b
ON a.Id = b.ObjectId AND b.ObjectType = 8 (example enum value)
我試圖揭露Item.ObjectType
和Item.ObjectId
屬性,然後在做我的項目地圖如下:
HasMany(x => x.Attachments)
.WithOptional()
.Map(x => x.MapKey("ObjectType", "ObjectId"))
.WillCascadeOnDelete(false);
但是這會導致以下運行時錯誤,大概是因爲這不是數據庫中的實際外鍵。
指定的關聯外鍵列'ObjectType,ObjectId' 無效。在代碼第一映射不支持指定必須 主鍵列
這就是我所害怕的,但找不到任何具體的證據表明它不被支持。希望這將在未來得到支持,因爲對我來說這是一種比較常見的情況(其中一種類型可以與許多其他類型相關),並且對每種類型使用枚舉比使用單獨的連接表更好。 – Jared