8
是否可以在實體框架4.1(代碼優先方法)中僅使用數據註釋而不使用模型構建器來定義多對多關係?實體框架4.1代碼優先 - 僅使用數據註釋定義多對多
例如,像:
Product = { Id, Name, ... }
Category = { Id, Name, ... }
ProductCategory = { ProductId, CategoryId }
你得到的圖片。
我不希望在兩個多對一的上下文中有一箇中間實體ProductCategory
,因爲我沒有任何附加數據,只有兩個FK。另外,我應該能夠爲中間表定義表名,以便與現有數據庫一起使用。
謝謝,我按你的建議做了,但它仍然不起作用。出於某種原因,我得到一個異常'無效的列名'Category_Id'。\ r \ n當我嘗試評估'product.Categories'時,無效的列名'Product_Id'.'。這只是使用約定,即沒有註釋或流利的API。我的數據庫表'ProductsCategories'有'ProductId'和'CategoryId',兩者之間沒有下劃線。爲什麼是下劃線?它沒有記錄在任何地方作爲公約AFAIK。對於1-M和M-1關係,EF4.1不需要下劃線(至少它沒有記錄)。 – 2011-06-08 21:09:43
Product_Id和Category_Id是默認名稱。如果您有現有數據庫並且名稱不同,則必須使用模型構建器將關係正確映射到您自己的表。 – 2011-06-08 21:47:34
你說得對。但是,在其他使用1-M關係的地方,它預計FK字段*不帶*下劃線(即'ProductId')。這是沒有意義的**。實際上,這意味着如果稍後向ProductCategories中間表添加另一個字段(例如「Ord」),它將成爲一個真正的實體,然後該公約會抱怨找不到字段「ProductId」。 – 2011-06-08 22:19:51