gpt4 book ai didi

c# - 如何在 EntityTypeConfiguration 类中设置外键

转载 作者:可可西里 更新时间:2023-11-01 03:06:00 25 4
gpt4 key购买 nike

我刚开始制作 EntityTypeConfiguration 类并做了以下操作

public class Xyz
{
public int PlaceId { get; set; }

public string Name { get; set; }

public DbGeography Location { get; set; }

public int HumanTypeId { get; set; }

public int AddressId { get; set; }
}

在 EntityTypeConfiguration 类中

 public sealed class XyzConfiguration:EntityTypeConfiguration<Xyz>
{
public XyzConfiguration()
{
ToTable("Place", "dbo");
HasKey(p => p.PlaceId);
Property(p => p.PlaceId)
.HasColumnName("PlaceId")
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

Property(p => p.Name);
Property(p => p.Location). ;
Property(p => p.HumanTypeId);
Property(p => p.AddressId);
}
}

现在如何设置 DbGeography 和外键列 HumanTypeId , AddressId

提前致谢

最佳答案

这取决于您要对列执行的操作。如果您有像 AddressId 这样的外键列,您可能有一些要与 Xyz 实体关联的 Address 实体。您需要决定实体如何相互关联,并在它们之间配置您想要的映射。

您的 Address 类或 Xyz 类中需要一个导航属性,否则没有任何东西可以绑定(bind)外键,您的外键ID 列将被视为普通列(这很好,如果这是您想要的)。

因此,如果您要将导航属性添加到您的 Xyz 实体

public class Xyz
{
// Your code
public int AddressId { get; set; }
public virtual Address MyAddress { get; set; }
}

// Your Address class
public class Address
{
public int ID;
}

您可以通过执行以下操作来配置映射(它会因关系而异:

public sealed class XyzConfiguration : EntityTypeConfiguration<Xyz>
{
public XyzConfiguration()
{
// Your code.

this.HasOptional(x => x.MyAddress) // Your Xyz has an optional Address
.WithMany() // Address may be owned by many Xyz objects
.HasForeignKey(x => x.AddressId); // Use this foreign key.
}
}

我还没有尝试过使用空间类型和 EF,但我会从这里开始:http://msdn.microsoft.com/en-us/data/hh859721.aspx

在 EF 页面入门中有大量关于映射配置的信息:http://msdn.microsoft.com/en-us/data/ee712907尝试“Fluent API - 配置/映射属性和类型”

这里还有对不同关联类型的略微删节说明: Code First: Independent associations vs. Foreign key associations?

关于c# - 如何在 EntityTypeConfiguration 类中设置外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809111/

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