【发布时间】:2015-02-12 05:49:34
【问题描述】:
我尝试使用 Entity Framework 6 实现 1..0 关系。我使用实例关联。我尝试重复网络和论坛中的示例,但不知何故它对我不起作用。请帮忙。
实体:
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 Profiler 为我提供了 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,尝试将客户属性添加到 City(虽然它不正确,而且 City 不必了解客户) 没有什么帮助。关联实体始终为空。 我哪里错了?
【问题讨论】:
标签: sql entity-framework mapping one-to-one fluent