我的 EntityFramework 遇到了一些问题。 我的设置如下: 我正在使用代码优先迁移,这是数据库结构:
using Microsoft.Azure.Mobile.Server;
namespace myProject.DataObjects
{
public class ListRelations : EntityData
{
public string userID { get; set; }
public bool read { get; set; }
public bool write { get; set; }
}
}
现在从 EnityData 继承应该添加 ID 字段和所有元数据内容,对吧? 当我尝试像这样填充数据库时:
var relations = new ListRelations();
relations.userID = currentUser;
relations.read = true;
relations.write = true;
relations.listID = current.Id;
context.ListRelationsSet.Add(relations);
try {
context.SaveChanges();
}
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}",
validationError.PropertyName,
validationError.ErrorMessage);
}
}
}
我收到错误,提示需要填充 ID 字段。 但是,数据库不应该为我做这件事吗? 我有一点困惑, 欢迎任何帮助!
最佳答案
使用
public class ListRelations : EntityData
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity),
Column(TypeName = "varchar"),
MaxLength(20),
Key]
public string userID { get; set; }
public bool read { get; set; }
public bool write { get; set; }
}
这取决于您的数据库提供商,但例如 T-Sql 有一个名为 newsequentialid()
的过程来帮助填充此类列。
迁移中的示例使用可能是
Id = c.Guid(nullable: false, identity: true, defaultValueSql: "newsequentialid()"),
关于c# - Entity Framework 6 - 调用 SaveChanges() 时未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645829/