我有一个场景,我需要一些帮助。更新关系实体
让我们假设有一个用户监听某种类型的音乐。
class User
{
public virtual List<UserMusicType> Music { get; set; }
}
public class UserMusicType
{
public int ID { get; set; }
public MusicType name { get; set; }
}
public class MusicType
{
public int ID { get; set; }
public string Name { get; set; }
}
有一种形式,我要求用户检查/选择他听的所有类型的音乐。他选择了3种类型,即{流行,摇滚,电子}
案例1:
现在我想更新的用户实体和插入这些3种新类型。根据我的理解,我需要先删除此用户的任何MusicTypes保存在数据库中,然后再次插入这些新类型。这是一个正确的方法吗?删除所有以前的和插入新的?或者有任何其他方式来做到这一点?
案例2:
我正在MusicType名称作为当然的字符串。现在,在更新用户实体,我得先取后,该MusicType.ID我就可以做到这一点:
user.Music.Add(new UserMusicType() { ID = SOME_ID });
是否有此情况下,更好的方法?
我很乐意收到EF有经验的人的回复。我想知道是否有这样做的有效方法。或者即使我的方法/模型完全错误或可以改进。
如果我在复选框使用MusicType.ID,任何用户都可以修改它,并键入一些随机id,这将可能永远存在。 EF只会添加那些存在的东西?或者它会添加一个新的ID?我是否必须担心异常? – Waleed
@Waleed如果您已将其状态更改为“已添加”,则会插入新的。但是,更好的方法是检查存储在缓存中的'MusicType'集合中是否存在submiited类型的id。所以,不需要对数据库进行额外的查询。 –