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
Entity framework 通过实体框架添加不包含值的记录_Entity Framework - Fatal编程技术网

Entity framework 通过实体框架添加不包含值的记录

Entity framework 通过实体框架添加不包含值的记录,entity-framework,Entity Framework,如何通过实体框架将记录添加到包含一个identity列和一个通过newid()自动赋值的哈希列的表中 这是我的密码 using (GM.Entity.Entities context = new GM.Entity.Entities()) { var q = context.xattachment.Add(new Entity.xattachment(){}); context.SaveChanges();

如何通过实体框架将记录添加到包含一个identity列和一个通过newid()自动赋值的哈希列的表中

这是我的密码

using (GM.Entity.Entities context = new GM.Entity.Entities())
            {
                var q = context.xattachment.Add(new Entity.xattachment(){});
                context.SaveChanges();

                return q.AttachmentID;
            }

当我添加像new
Entity.xattachment(){Hash=“1234”}
这样的值时,效果很好。如何添加非值行,例如
新建实体.xattachment(){}

实体框架将从这些值生成sql,因此要实现所需的功能,请执行这两个选项之一

  • 不要映射hash属性,让sql数据库插入默认值,即newid(),但这意味着EF永远不会知道该列,并且在加载实体时无法像通常那样检索该列

  • 向实体添加构造函数并将哈希属性初始化为新值,这样在添加实体时就不需要对其进行初始化,我个人更喜欢此选项,因为如果代码决定传递哈希值,并且在加载实体时仍然可以检索该值,则它可以灵活地覆盖该值


  • 希望这能有所帮助

    那么,当您添加一个空对象时,您希望插入什么列哈希值?@Omar.Alani因为db通过输入newid()来处理哈希,所以我需要将哈希设置为null,以便从EF插入它,并让db处理哈希的标识列和newid()。关于这两种解决方案的更多信息是可以接受的。但是关于解决方案1。若我并没有映射哈希列,我希望能够通过ef为它检索值。我认为解决方案2和使用guid而不是newid的选项要好得多。我已更新了答案以提供更多详细信息。您确实提供了一些信息,因此我将其标记为答案