如何通过Entity Framework在DB中插入更新多个数据

时间:2014-07-22 14:34:30

标签: c# sql-server entity-framework

假设我想要通过EF插入/更新的记录很少。

public partial class Contact
{
        public int ContactID { get; set; }
        public string ContactPerson { get; set; }
        public string EmailID { get; set; }
}

var _Contact = new list<Contact>();
_Contact.add(new Contact(){ContactID=1,ContactPerson="Dev",EmailID="d@gmail.com"});
_Contact.add(new Contact(){ContactID=2,ContactPerson="Ross",EmailID="a@gmail.com"});
_Contact.add(new Contact(){ContactID=3,ContactPerson="Martin",EmailID="b@gmail.com"});
_Contact.add(new Contact(){ContactID=4,ContactPerson="Moss",EmailID="c@gmail.com"});
_Contact.add(new Contact(){ContactID=5,ContactPerson="Koos",EmailID="q@gmail.com"});

在存储过程的帮助下,我们可以检测到是否存在任何特定记录,如果存在则会执行更新,如果不存在则会插入记录。我想通过EF做同样的事情.......有可能吗?

我知道我可以从EF调用SQL Server存储过程来实现我的目标,但我想知道我是否可以在EF中执行它而不调用存储过程?

如果是,那么用样本代码讨论相同的内容,检查db中是否存在每个记录,如果存在,那么它将更新否则将插入。寻求帮助。

1 个答案:

答案 0 :(得分:1)

从EF 4.3开始,DbSet有一个AddOrUpdate ExtensionMethod。在命名空间System.Data.Entity.Migrations

public partial class Contact
{
    public int ContactID { get; set; }
    public string ContactPerson { get; set; }
    public string EmailID { get; set; }
}

var _Contact=new list<Contact>();
_Contact.add(new Contact(){ContactID=1,ContactPerson="Dev",EmailID="d@gmail.com"});
_Contact.add(new Contact(){ContactID=2,ContactPerson="Ross",EmailID="a@gmail.com"});
_Contact.add(new Contact(){ContactID=3,ContactPerson="Martin",EmailID="b@gmail.com"});
_Contact.add(new Contact(){ContactID=4,ContactPerson="Moss",EmailID="c@gmail.com"});
_Contact.add(new Contact(){ContactID=5,ContactPerson="Koos",EmailID="q@gmail.com"});

// check by Primary key
context.Contacts.AddOrUpdate(_Contacts)
// or check by EmailID
context.Contacts.AddOrUpdate(p => p.EmailID, _Contacts)
相关问题