Entity framework 4 如何使用实体框架CTP4 POCO注释将外键映射到现有数据库
我有一个现有的数据库,在两个表之间有一个非常简单的单向外键关系。我需要创建带有映射的类,这些映射将与现有数据库一起工作Entity framework 4 如何使用实体框架CTP4 POCO注释将外键映射到现有数据库,entity-framework-4,Entity Framework 4,我有一个现有的数据库,在两个表之间有一个非常简单的单向外键关系。我需要创建带有映射的类,这些映射将与现有数据库一起工作 CREATE TABLE OfflinePackage ( PackageID int, Name nvarchar(100) ... CREATE TABLE OfflinePackageDocument ( PackageDocumentID int, PackageID int, --- FK referen
CREATE TABLE OfflinePackage (
PackageID int,
Name nvarchar(100)
...
CREATE TABLE OfflinePackageDocument (
PackageDocumentID int,
PackageID int, --- FK references OfflinePackage.PackageID
...
我为每个表定义了一个类。我想使用注释(如果必须的话,也可以使用fluent api)
将外键OfflinePackageDocument.PackageID映射到OfflinePackageId的步骤
我正在尝试使用RelatedTo注释:
public class OfflinePackageDocument
{
[Key, StoreGenerated(StoreGeneratedPattern.Identity)]
public int PackageDocumentID { get; set; }
[RelatedTo(Property = "PackageID")]
public virtual OfflinePackage Package { get; set; }
...
}
public class OfflinePackage
{
[Key, StoreGenerated(StoreGeneratedPattern.Identity)]
public int PackageID { get; set; }
...
}
但我在ModelBuilder.CreateModel()期间遇到此错误:
RelatedToAttribute指定的导航属性“PackageID”。在相关类型“OfflinePackage”上找不到属性值
PackageID当然是OfflinePackage中的一个属性
我不知道我在这里做错了什么。我知道了如何让它工作 首先,OfflinePackageDocument类中必须有PackageID int属性(该属性直接映射到表中的外键)。然后,您可以添加“virtual OfflinePackage”导航属性,将新添加的PackageID指示为外键
public class OfflinePackageDocument
{
[Key, StoreGenerated(StoreGeneratedPattern.Identity)]
public int PackageDocumentID { get; set; }
public int PackageID { get; set; } // This must exist - maps directly to the DB field
[RelatedTo(ForeignKey = "PackageID")]
public virtual OfflinePackage Package { get; set; } // Now we can define this navigation property
....
}
谢谢,我只是在搞砸我的头。我在映射回同一对象的多个外键上得到了重复的列。。。例如CreatedBy,ModifiedBy映射回用户对象,每个对象给我2列。这把它修好了