我从下面的代码中获得了运行时异常。我认为它不是创建主键(CustomerID和int)。我使用了向导,而且我有多年前使用ADO.NET的经验,但这是我的第一个使用Entity Framework 6.0和DbContext的项目。我使用"数据库优先"生成了EDMX文件,因此存在实际的数据库。我不认为任何其他表都与此表具有外键关联是强制性的,因此我认为(但不确定)此运行时错误是由于无法创建新主键。这可能是一个非常简单的问题,也可能是一个难题,所以我稍后会检查。
保
[OperationContract]
public void DoWork ()
{
try
{
using (var ctx = new MyEDMXdBExistingDatabase())
{
CUSTOMER myCustomerREALLYNEW = new CUSTOMER();
myCustomerREALLYNEW.LastName = "NeWLASTNAME";
myCustomerREALLYNEW.CustomerID = 0; //set primary key to zero and let entity framework create new one automagically? I think this works based on past experience, but it's not working now
ctx.CUSTOMERs.Add(myCustomerREALLYNEW);
ctx.SaveChanges(); //PROBLEM HERE If comment out this line no runtime error
}
}
catch (DbEntityValidationException ex1)
{
Debug.WriteLine(ex1.Message);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
finally
{
}
}
答案 0 :(得分:0)
我添加了以下代码,它向我展示了新的CUSTOMER缺少一个mandontory,非null字段(Address)。一旦我添加了myCustomerREALLYNEW.Address =" 123 Street&#34 ;;然后可以添加新记录/对象。
这是我为捕获运行时异常而添加的代码,我从网上下载了这些代码:
catch (DbEntityValidationException ex1)
{
Debug.WriteLine("!" + ex1.Message);
List<string> errorMessages = new List<string>();
foreach (DbEntityValidationResult validationResult in ex1.EntityValidationErrors)
{
string entityName = validationResult.Entry.Entity.GetType().Name;
foreach (DbValidationError error in validationResult.ValidationErrors)
{
errorMessages.Add(entityName + "." + error.PropertyName + ":" + errorMessages);
}
}
foreach (string s in errorMessages)
{
Debug.WriteLine(s);
}
}