【发布时间】:2014-09-08 16:56:12
【问题描述】:
我已经尝试过本教程,但它对我不起作用 (Link),我的目标是只更新我的实体的一个字段...没有其他字段。我正在测试 EntityFramework,我想检查是否可以在仅更新一个字段后执行 DTO 的自动映射器。
我试过这个:
MyContext db = new MyContext();
MyClass sampleModel = new MyClass();
sampleModel.IdMyClass = "1d1ba1f2-8c08-c334-5486-08d16fecc6e3"; //GUID
sampleModel.ModificationDate = DateTime.Now;
db.MyClass.Attach(sampleModel);
db.Entry(sampleModel).Property(x => x.ModificationDate).IsModified = true;
db.SaveChanges();
MyClass 类
public partial class MyClass
{
public string IdMyClass { get; set; }
public string Name { get; set; }
public System.DateTime ModificationDate { get; set; }
public virtual ICollection<OtherClass> OtherClass{ get; set; }
}
MyClassMap
public MyClassMap() : EntityTypeConfiguration<MyClass>
{
//Primary Key
this.HasKey(t => t.IdMyClass);
//Properties
this.Property(t => t.Name)
.IsRequired()
.HasMaxLength(256);
// Table & Column Mappings
this.ToTable("MyClass");
this.Property(t => t.IdMyClass).HasColumnName("IdMyClass");
this.Property(t => t.Name).HasColumnName("Name");
this.Property(t => t.ModificationDate).HasColumnName("ModificationDate");
}
我的问题在哪里??
错误详情,发生在 db.SaveChanges()
类型异常 'System.Data.Entity.Validation.DbEntityValidationException' 发生 在 EntityFramework.dll 中,但未在用户代码中处理
附加信息:一个或多个实体的验证失败。 有关详细信息,请参阅“EntityValidationErrors”属性。
EntityValidationErrors 为空...
【问题讨论】:
-
您能否详细说明您的代码“不起作用”的原因?你期待什么,实际发生了什么?如果您遇到异常,请发布发生异常的行和异常详细信息。
-
我认为,Name = null on db.SaveChanges();
-
您可以附加一个实体,而无需从数据库中请求它。
-
@Rodrigo - 是的,你说得对。
-
不,对不起,不要听我的。 @Rodrigo 是对的。你可以像你正在做的那样附加它。只需在附加之前指定名称。
标签: c# entity-framework asp.net-mvc-5