我正在使用IdentityModels
向我的ApplicationUser
(UserProperties
)添加一些额外数据。
这是UserProperties类:
public UserProperties()
{
Region = new Region();
Universe = new Universe();
}
public int UserPropertiesId { get; set; }
public Region Region { get; set; }
public Universe Universe { get; set; }
手头的问题是,无论何时用户创建帐户,他们都必须选择区域和Universe,但不是将区域和Universe“链接”到UserProperties的条目,而是实体框架创建 new 即使提供给区域和Universe 的AccountController的ID (即它们存在于数据库中),也可以在Universe和区域中进行操作。
我该如何解决这个问题?
如果您需要更多信息,请告诉我们。
答案 0 :(得分:3)
您的问题出在UserProperties
构造函数中,您可以在其中创建Region
和Universe
的新实例。这些实体将从您的datacontext中分离出来。因此,当您调用SaveChanges
并且实体框架看到您的userproperty有两个已分离的相关实体时,它会假定需要创建它们。 More info
你需要
context.Regions.Attach(myRegion);
。UserProperties
,然后设置它们而不是实际实体。 我会选择3.我发现拥有外键属性总是有用的。
您还需要从构造函数中删除初始化,否则每次保存UserProperties时它都会继续创建新的区域和Universe。 <插入字符串理论笑话>
答案 1 :(得分:0)
试试这个
public int UserPropertiesId { get; set; }
public int RegionId{get;set;}//should be the key of Region table
public Region Region { get; set; }
public int UniverseId{get;set;}//should be the key of Universe table
public Universe Universe { get; set; }
这应该进行链接。
查看this博客