我在將值對象/複雜類型的屬性映射到實體時遇到問題。我有一個用戶實體,它具有一個名爲Credential的複雜類型屬性,該屬性又具有屬性:Email,UserName,Password和SecurityStamp。我想從複雜類型的屬性映射到實體,源代碼如下所示:實體框架:「ComplexType.Field」屬性不存在或未映射到「實體」類型
public class User
{
public string Id { get; protected set; }
public Credential Credential { get; protected set; }
// unrelated properties and methods omitted for simplicity
}
public sealed class Credential: ValueObject<Credential>
{
public string Email { get; private set; }
public string UserName { get; private set; }
public string Password { get; private set; }
public string SecurityStamp { get; private set; }
public Credential() { }
public Credential(string email, string userName, string password, string securityStamp)
{
Email = email;
UserName = userName;
Password = password;
SecurityStamp = securityStamp;
}
public class CoreContext: DbContext
{
public IDbSet<User> Users { get; set; }
public CoreContext(string connectionString) : base(connectionString) {}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<CoreContext>(null);
modelBuilder.ComplexType<Credential>().Property(ucr => ucr.Email).HasColumnName("Email");
modelBuilder.ComplexType<Credential>().Property(ucr => ucr.UserName).HasColumnName("UserName");
modelBuilder.ComplexType<Credential>().Property(ucr => ucr.Password).HasColumnName("Password");
modelBuilder.ComplexType<Credential>().Property(ucr => ucr.SecurityStamp).HasColumnName("SecurityStamp");
modelBuilder.Entity<User>().Property(u => u.Credential.Email).HasColumnName("Email");
modelBuilder.Entity<User>().Property(u => u.Credential.UserName).HasColumnName("UserName");
modelBuilder.Entity<User>().Property(u => u.Credential.Password).HasColumnName("Password");
modelBuilder.Entity<User>().Property(u => u.Credential.SecurityStamp).HasColumnName("SecurityStamp");
}
}
正如你看到的,我試圖映射覆雜類型屬性的實體。我首先將Credential配置爲複雜類型,然後配置實體User的屬性。但是,我收到以下錯誤:
The 'Credential.Email' property does not exist or is not mapped for the type 'User'.
我不明白爲什麼發生這種情況。我盡我所能配置複雜類型映射,爲什麼它不工作?任何人對我可能做錯了什麼都有想法?
u.Credential是導航屬性,您已將其映射到之前的行中。刪除最後4行,因爲這些是用戶實體的NO屬性。 – DevilSuichiro
@DevilSuichiro:如你所說,和以前一樣的錯誤信息,它不能解決問題。 –
@LordYggdrasill你曾經解決過這個問題嗎? – rleffler