我知道有些帖子有类似的问题。但我的问题是一种奇怪的问题。
开发环境:WPF +实体框架+ SQL Express
问题发生时:我的测试代码失败了。当我逐个运行/调试测试方法时,它不会发生;它发生在我调试/测试测试方法时,异常发生。您可能认为测试之间存在依赖关系。但我的每个测试都与创建环境无关 - >设置 - >验证 - >清理。
问题: - 例外:属性'HotelName'是对象密钥信息的一部分,无法修改。 - 当我尝试将新客户记录添加到数据库时,可能会发生这种情况。代码如下:
Customer customerInstance = null;
try
{
customerInstance = new Customer();
customerInstance.FirstName = firstName;
customerInstance.SurName = lastName;
customerInstance.PhoneNumber = phoneNumber;
customerInstance.ID = ID;
customerInstance.IDTypeID = IDTypeID;
m_HotelDB.Customers.Add(customerInstance); //m_HotelDB is a DBContext
m_HotelDB.SaveChanges();
}
catch (Exception ex)
{
SysLog.Log(LogType.ERROR, "Add customer error: " + ex.Message);
}
ex.Message是“属性'HotelName'是对象关键信息的一部分,无法修改”。这对我来说很奇怪,因为“酒店名称”完全与客户对象无关。它存在于Dictionary_Hotel中,与Customer表没有任何关系,我在整个项目中没有代码来更新此属性。
你以前遇到过这种问题吗?如果您有任何想法,请提前感谢您。 新年快乐!
一些更新: 我发现“HotelName”是我创建的视图的一部分。我有一个视图,其中包含客户信息和酒店信息。 当我尝试添加客户记录时,似乎Entity Framework尝试相应地更新视图,其中包含HotelName字段。它很奇怪。 任何线索?