我有以下情况:
public class Person
{
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ICollection<PhoneNumber> PhoneNumbers { get; set; }
}
public class PhoneNumber
{
public int Id { get; set; }
public string Number { get; set; }
public string Type { get; set; }
}
哪个应该匹配数据库中的模式,如下所示:
CREATE TABLE [dbo].[Contacts]
(
[ContactId] NVARCHAR(50) NOT NULL,
[FirstName] NVARCHAR(150) NOT NULL,
[LastName] NVARCHAR(150) NOT NULL
)
CREATE TABLE [dbo].[PhoneNumbers]
(
[PhoneNumberId] INT IDENTITY(1,1) NOT NULL,
[ContactId] NVARCHAR(50) NOT NULL,
[PhoneNumber] NVARCHAR(20) NOT NULL,
[Type] NVARCHAR(1000) NOT NULL
)
我有两个实现EntityTypeConfiguration的类。
public class PhoneNumberConfiguration : EntityTypeConfiguration<PhoneNumber>
{
public PhoneNumberConfiguration()
{
ToTable(TableName);
Property(e => e.Id).HasColumnName("PhoneNumberId");
Property(e => e.Value).HasColumnName("PhoneNumber");
Property(e => e.PhoneType).HasColumnName("Type");
}
}
public class ContactConfiguration : EntityTypeConfiguration<Person>
{
public ContactConfiguration()
{
ToTable("Contacts");
Property(contact => contact.Id)
.HasColumnName("ContactId");
}
}
由此,我可以使用EF 4.3的流畅API来指定电话号码和人员之间的外键是否存储在名为ContactId的字段中的电话号码表中?
由于
答案 0 :(得分:1)
是的,这是可能的。在ContactConfiguration
构造函数中添加映射:
HasMany(contact => contact.PhoneNumbers)
.WithRequired()
.Map(map => map.MapKey("ContactId"));