gpt4 book ai didi

entity-framework-4 - 如何使用 Entity Framework CTP4 POCO 注释与现有数据库映射外键

转载 作者:行者123 更新时间:2023-12-04 07:51:55 25 4
gpt4 key购买 nike

我有一个现有的数据库,两个表之间有一个非常简单的单向外键关系。我需要创建具有可与现有数据库一起使用的映射的类。

CREATE TABLE OfflinePackage (
PackageID int,
Name nvarchar(100)
...

CREATE TABLE OfflinePackageDocument (
PackageDocumentID int,
PackageID int, --- FK references OfflinePackage.PackageID
...

我为每个表定义了一个类。我想使用注释(如果必须的话,也可以使用 fluent api)
将外键 OfflinePackageDocument.PackageID 映射到 OfflinePackage.PackageID

我正在尝试使用 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() 期间收到此错误:

在相关类型“OfflinePackage”上找不到由 RelatedToAttribute.Property 值指定的导航属性“PackageID”。

PackageID 当然是 OfflinePackage 中的一个属性。

我无法弄清楚我在这里做错了什么。

最佳答案

我想出了如何使这项工作。

首先,OfflinePackageDocument 类中必须有一个 PackageID int 属性(这直接映射到表中的外键)。然后,您可以添加“虚拟OfflinePackage Package”导航属性,将新添加的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

....
}

关于entity-framework-4 - 如何使用 Entity Framework CTP4 POCO 注释与现有数据库映射外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3418575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com