1

我有以下实体模型。当我尝试保存包含新帐户的新用户对象时,它会引发 DBUpdateException:保存不为其关系公开外键属性的实体时发生错误。

是否可以在不向我的模型中添加外键的情况下为这两个对象提供映射。我讨厌在我的模型中使用外键的想法。如果没有其他解决方案,我将如何使用外键解决此问题?

public class User
{
   public virtual int Id { get; set; }
   public virtual Account Account { get; set; }
}

public class Account
{
   public virtual int Id { get; set; }
}
4

2 回答 2

2

这些类中的任何一个真的是“复杂类型”还是它们都是具有自己对应表的实体?

如果它们是实体,您确实可以将 EF 配置为在类本身中不需要外键属性。在您的 DbContext 类中,覆盖OnModelCreating并添加一些配置代码,如下所示:

modelBuilder.Entity<User>().HasRequired(u => u.Account).WithRequiredPrincipal();

如果我做对了,那将在用户和帐户之间配置“必需:必需”关系,而不需要任何一个类的任何外键属性。

于 2013-03-04T00:26:47.913 回答
1

您必须Id从类中删除该属性,Account否则实体框架会将类Account视为实体而不是复杂类型。

于 2013-03-03T23:58:29.247 回答