【发布时间】:2011-07-06 20:23:32
【问题描述】:
我有一个用户表和一个用户配置文件表。一个用户有零个或只有一个用户配置文件。 (即一对一的关系)有人可以帮助我使用 EF4.1 fluent API 将用户实体映射到用户和用户配置文件表。下面是表格的详细信息。用户和 AuthProvider 也有一对多的关系。
// 1. Users Table has the columns(UserId(PK), UserName, Email, AuthProviderId(FK))
// 2. UserProfiles Table has columns(UserId(PK/FK), FirstName, MiddleName,LastName)
// 3. AuthProvider Table has columns (AuthProviderId(PK), AuthName)
public class User {
public User() {
Id = Guid.NewGuid();
}
public virtual Guid Id { get; private set; }
public virtual string Username { get; set; }
public virtual string Email { get; set; }
public virtual AuthProvider AuthProvider { get; set; }
public virtual string FirstName { get; set; }
public virtual string MiddleName { get; set; }
public virtual string LastName { get; set; }
}
public class AuthProvider {
public AuthProvider() {
Id = Guid.NewGuid();
}
public virtual Guid Id { get; private set; }
public virtual string Name { get; set; }
public virtual ICollection<User> Users { get; set; }
}
// This is the Mappings
public class UserConfiguration : EntityTypeConfiguration<User> {
public UserConfiguration() {
HasKey(x => x.Id).Property(x => x.Id).HasColumnName("UserId").IsRequired();
Property(x => x.Username).HasColumnName("Username").IsRequired();
Property(x => x.Email).HasColumnName("Email").IsRequired();
Property(x => x.FirstName).HasColumnName("FirstName").IsOptional();
Property(x => x.MiddleName).HasColumnName("MiddleName").IsOptional();
Property(x => x.LastName).HasColumnName("LastName").IsOptional();
HasRequired(x => x.AuthProvider).WithMany(x => x.Users).Map(x => x.MapKey("AuthProviderId"));
Map(mc => {
mc.Properties(x => new {
x.Id,
x.Username,
x.Email,
x.AuthProvider
});
mc.ToTable("Users");
});
Map(mc => {
mc.Properties(x => new { x.Id, x.FirstName, x.MiddleName, x.LastName });
mc.ToTable("UserProfiles");
});
}
}
public class AuthProviderConfiuration : EntityTypeConfiguration<AuthProvider> {
public AuthProviderConfiuration() {
ToTable("AuthProviders");
HasKey(x => x.Id).Property(x => x.Id).HasColumnName("AuthProviderId").IsRequired();
Property(x => x.Name).HasColumnName("ProviderName").IsRequired();
}
}
【问题讨论】:
标签: entity-framework entity-framework-4.1 ef-code-first