【发布时间】:2013-03-15 17:44:00
【问题描述】:
假设您有一个 SQL Server 数据库 (TestDB),其中仅包含两个可以通过执行以下 Transact-SQL 创建的表:
CREATE TABLE Person(
personId INT PRIMARY KEY IDENTITY(1,1),
name VARCHAR(50)
)
CREATE TABLE House(
personId INT,
houseId INT,
builtDate DATETIME,
PRIMARY KEY(personId, houseId)
)
理想情况下,表 House 中的字段 personId 将是引用表 PersonpersonId 的外键/b>,但如您所见,不是。此外,假设数据库架构不能被修改。
我希望有以下类来使用实体框架来表示这些表
[Table("Person")]
public class Person
{
[Column("personId")]
public int Id{ get; set; }
[Column("name")]
public string Name{ get; set; }
public List<House> Houses{ get; set; }
}
[Table("House")]
public class House
{
[Column("personId")]
public int OwnerId { get; set; }
[ForeignKey("OwnerId")]
public Person Owner { get; set; }
[Column("houseId")]
public int HouseId{ get; set; }
[Column("builtDate")]
public DateTime BuiltDate{ get; set; }
}
public class EFDbContext : DbContext
{
public DbSet<Person> Persons {get; set;}
public DbSet<House> Houses {get; set;}
}
我认为如果数据库中 Person(personId) 和 House(personId) 之间存在关系,这将是 Entity Framework 将生成的类模型,但请记住数据库中没有外键约束。
我认为关键问题是:当你实际上没有外键时,你将如何模拟它?
记住我不能触摸数据库。
谢谢。
【问题讨论】:
-
你能在本地复制数据库吗?
标签: .net database entity-framework c#-4.0