C# 使用实体框架更新实体的单个属性时出错
我有以下实体:C# 使用实体框架更新实体的单个属性时出错,c#,entity-framework,dbcontext,C#,Entity Framework,Dbcontext,我有以下实体: public class Document { public int Id { get; set; } [Required] public string Number { get; set; } public int Version { get; set; } //other properties with [Required] } 我编写了一个方法,只更新一个文档的版本: public void SetDocumentVersion(int do
public class Document
{
public int Id { get; set; }
[Required]
public string Number { get; set; }
public int Version { get; set; }
//other properties with [Required]
}
我编写了一个方法,只更新一个文档的版本
:
public void SetDocumentVersion(int docId, int version)
{
var doc = new Document() { Id = docId, Version= version };
using (var db = new MyEfContextName())
{
db.Documents.Attach(doc);
db.Entry(doc).Property(x => x.Version).IsModified = true;
db.SaveChanges(); //<--- get error
}
public void SetDocumentVersion(int-docId,int-version)
{
var doc=new Document(){Id=docId,Version=Version};
使用(var db=new MyEfContextName())
{
db.文件。附件(文件);
db.Entry(doc.Property)(x=>x.Version).IsModified=true;
db.SaveChanges();//在创建文档类的实例时,从文档类中删除编号属性的[必需]
属性,或为编号属性赋值
第一种方法:
public class Document
{
public int Id { get; set; }
//[Required] /*Remove this attribute*/
public string Number { get; set; }
public int Version { get; set; }
//other properties
}
若您无法从模型中删除[必需]
,则为编号指定一些值
var doc = new Document() { Id = docId, Version= version, Number = "NotNullStringValue" };
有关的详细信息,请在创建文档类的实例时,从文档类中删除编号属性的[必需]
属性,或为编号属性赋值
第一种方法:
public class Document
{
public int Id { get; set; }
//[Required] /*Remove this attribute*/
public string Number { get; set; }
public int Version { get; set; }
//other properties
}
若您无法从模型中删除[必需]
,则为编号指定一些值
var doc = new Document() { Id = docId, Version= version, Number = "NotNullStringValue" };
有关为数字字段指定值的详细信息
var doc = new Document() { Id = docId, Version= version, Number = "SomeValue" };
为数字字段指定一个值
var doc = new Document() { Id = docId, Version= version, Number = "SomeValue" };
因此,当在数据库中形成表的类上使用数据注释时,它们被转换为约束。所需的注释被转换为NOTNULL,这意味着必须提供一个值
如果希望字段为空或提供值,请删除所需的注释
因此,当在数据库中形成表的类上使用数据注释时,它们会转换为约束。所需的注释转换为NOTNULL,这意味着必须提供一个值
如果希望字段为空或提供值,请删除所需的注释
您可以禁用保存更改时的验证(在调用SaveChanges
之前执行此操作):
然后,它应该像您期望的那样工作(仅为版本
列生成更新
查询)。您可以禁用保存更改时的验证(在调用保存更改
之前执行此操作):
然后,它应该像您期望的那样工作(仅为版本
列生成更新
查询)。在创建文档类实例时为Number属性赋值。您可以看到Number字段用[必需]修饰
属性。错误消息是不言自明的…在创建文档类实例时为Number属性赋值。您可以看到Number字段用[必需]
属性修饰。错误消息是不言自明的。。。