【发布时间】:2014-04-16 14:49:25
【问题描述】:
表格
User
------
UserId PK
Access
-------
AccessId PK
UserId FK to User.UserId
用户实体
public int Id { get; set; }
public virtual Access Access { get; set; }
访问实体
public int Id { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
访问映射
...
HasKey(t => t.Id);
Property(t => t.Id).HasColumnName("AccessId");
HasRequired(t => t.User).WithOptional(t => t.Access);
...
用户映射
...
HasKey(t => t.Id);
Property(t => t.Id).HasColumnName("UserId");
...
查询
var access = _unitOfWork.Users.Get()
.Where(u => u.Id == userId)
.Select(u => u.Access)
.FirstOrDefault();
生成的 SQL
LEFT OUTER JOIN [dbo].[Access] AS [Extent2]
ON [Extent1].[UserId] = [Extent2].[AccessId] <-- ** PROBLEM IS HERE **
我的查询试图加入错误的列,即使我在数据库中设置了 PK/FK 并且在我的实体映射上指定了 PK。谁能发现我错过了什么?谢谢。
【问题讨论】:
标签: c# ef-code-first mapping entity-framework-6