作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我刚开始制作 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/
我是一名优秀的程序员,十分优秀!