Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架更新实体的单个属性时出错_C#_Entity Framework_Dbcontext - Fatal编程技术网

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字段用
[必需]
属性修饰。错误消息是不言自明的。。。