通过不包含任何值的实体框架添加记录

时间:2014-11-16 11:41:15

标签: entity-framework

如何通过Entity Framework将记录添加到包含一个标识列的表和一个通过newid()自动分配值的Hash列。

这是我的代码。

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

                return q.AttachmentID;
            }

当我添加像新Entity.xattachment(){ Hash = "1234"}这样的值时,它可以正常工作。如何添加不具有new Entity.xattachment(){}

等值的行

1 个答案:

答案 0 :(得分:2)

实体框架将根据这些值生成一个sql,因此要实现您的需求,请执行以下两个选项之一

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

  2. 向您的实体添加构造函数并将hash属性初始化为新值,因此您在添加实体时无需初始化它,我个人更喜欢这个选项,因为它可以让您灵活地覆盖值如果您的代码决定传递哈希值,您仍然可以在加载实体时检索它。

  3. 希望有所帮助。