我嘗試實現與實體框架6的1..0關係。我使用實例關聯。我試圖重複從網絡和論壇的例子,但不知何故它不適合我。請幫忙。EF 6.0中的空聯合實體Fluent Api
實體:
public class CustomerWithFk : Item // Item contains Id
{
public string Name { get; protected set; }
public virtual City City { get; set; } // relation property. Can be 1 or 0
public virtual Product Product { get; set; }
public decimal Money { get; protected set; }
}
public class City : Item
{
public string Name { get; protected set; }
}
映射:
public CityMap()
{
ToTable("Cities");
HasKey(c => c.Id);
}
public CustomerFkAssosiationMap()
{
ToTable("Customers");
HasKey(c => c.Id);
HasRequired(g => g.City)
.WithRequiredDependent();
HasRequired(g => g.Product)
.WithRequiredDependent()
.Map(x => x.MapKey("ProductId"));
}
數據庫表:
SQL事件探查器給我enxt SQL請求:
SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Extent1].[Name] AS [Name],
[Extent1].[Money] AS [Money],
[Extent1].[CityId] AS [CityId],
[Extent1].[ProductId] AS [ProductId]
FROM [dbo].[Customers] AS [Extent1]
所以,我在這裏沒有看到任何連接從城市或產品加載數據。 其結果是空:
我嘗試了不同的映射選項,如:HasOptional,WithRequiredPrincipal,試圖客戶廣告載體添加到市(雖然這是不正確的,城市沒有了解一下客戶) 沒有幫助。輔助實體始終爲空。 我錯在哪裏?
謝謝。但是有什麼辦法不使用像Include這樣的顯式命令並且在後臺使用FK?我確信,昨天,在一些映射實驗中,我用正確的結果填充了屬性而不用調用Include。 它看起來像我非常接近解決方案,但盲目,看不到我的錯誤... – 2014-12-13 18:59:52
請參閱編輯。我相信你正在尋找懶加載。 – Dean 2014-12-13 20:05:11