我有一个gmail服务,它返回我的联系人的姓名和电话号码。为了将这些信息存储到我的数据库中,我创建了两个简单的poco类
所以我想做的是:1-防止重复 2-我可能会更新Gmail上的联系人信息,所以下次我调用以下功能时我想更新联系人。我该怎么做?
public class CONTACTS_INFO
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CI_ROWID { get; set; }
public int CI_CONTACT_REFNO { get; set; }
public string CI_PHONE_NUMBERS { get; set; }
}
public class GMAIL_CONTACTS
{
public GMAIL_CONTACTS()
{
CONTACTS_INFO = new List<CONTACTS_INFO>();
}
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int GC_ROWID { get; set; }
public string GC_CONTACT_NAME { get; set; }
[ForeignKey("CI_CONTACT_REFNO")]
public List<CONTACTS_INFO> CONTACTS_INFO { get; set; }
}
以下是我的方法
using (var context = new MPContext())
{
foreach (var contact in cr.GetContacts().Entries)
{
if (string.IsNullOrEmpty(contact.Name.FullName)) continue;
var gContacts = new GMAIL_CONTACTS { GC_CONTACT_NAME = contact.Name.FullName };
foreach (var phonenumber in contact.Phonenumbers)
{
if (string.IsNullOrEmpty(phonenumber.Label)) continue;
gContacts.CONTACTS_INFO.Add(new CONTACTS_INFO { CI_PHONE_NUMBERS = phonenumber.Value + phonenumber.Label });
}
//Here I would like to do two things
//1-Check if I have this contact in database so I wont save it
//2-I may change information on the gmail so I would like to update my contacts
context.GMAIL_CONTACTS.Add(gContacts);
}
context.SaveChanges();
}
答案 0 :(得分:0)
如果要使用EF实现upsert,则需要
有些变体但使用EF需要访问数据库才能知道是否需要插入或修改实体。