【发布时间】:2017-03-01 09:48:10
【问题描述】:
过去三个小时我一直在试图解决这个问题,最后放弃了(我会解决它)。但是...只是为了确定...有没有办法在 EF6 Fluent API 中设置单向 0:1/1:1?
考虑:
CREATE TABLE LegacyUsers (
ID INT NOT NULL PRIMARY KEY,
UserName NVARCHAR(50),
EmployeeID INT NULL
)
CREATE TABLE Employees (
ID INT NOT NULL PRIMARY KEY,
EmployeeName NVARCHAR(50)
)
领域模型:
public class LegacyUser {
public int ID {get;set;}
public int? EmployeeID {get;set;}
public virtual Employee Employee {get;set;}
}
public class Employee {
public int ID {get;set;}
public string EmployeeName {get;set;}
}
“Fluent”(哈哈)API理论设置:
modelBuilder.Entity<LegacyUser>()
.HasOptional(x => x.Employee)
.WithForgeignKey(x => x.EmployeeID)
我已经研究了几个小时,并尝试了许多方法来配置它。对于我的努力,我得到了“列名已经存在”验证错误或“无效列:Employee_ID”错误的回报(如果这是双向的,我可以很容易地修复这些错误,但这或多或少是一个锁定模式)。我发现唯一会迫使它工作的是将其作为 1:M 关系进行尝试,这会因为必须将域模型属性用作集合而不是简单的单一的属性。
真的没有办法像我认为的那样简单吗?要求非常简单:在给定旧用户文件中的员工 ID 的情况下获取关联的员工对象(无需破坏模型或向数据库添加新字段)
(供参考):
【问题讨论】:
标签: c# entity-framework-6 ef-fluent-api