Asp.net 如何使用实体框架和事务插入属性多对多关系

Asp.net 如何使用实体框架和事务插入属性多对多关系,asp.net,entity-framework,Asp.net,Entity Framework,我有一张桌子Applicnt- 身份证 名字 斯图西德-- 此外,我还有一张表格applicationlanguages 身份证 应用程序 LanguageID(多对多关系) 所以我的问题是,当我试图添加一个申请人和他的语言-不应该是在交易中,是正确的方式来做 提前谢谢你 public void AddApplicant(string FirstName, string LastName, int StatusId,int AddressId, List<int>SelectedL

我有一张桌子Applicnt-

身份证

名字

斯图西德--

此外,我还有一张表格applicationlanguages

身份证

应用程序

LanguageID(多对多关系)

所以我的问题是,当我试图添加一个申请人和他的语言-不应该是在交易中,是正确的方式来做

提前谢谢你

public void AddApplicant(string FirstName, string  LastName, int StatusId,int AddressId, List<int>SelectedLanguages)
        {
            Applicant newApplicant = new Applicant { Name = FirstName, LastName = LastName,AddressesId = AddressId,StatusesId=StatusId };
            foreach (var item in SelectedLanguages)
            {
                newApplicant.Languages.Add(testEntity.Languages.Where(x=>x.id==item).FirstOrDefault());
            }
            testEntity.Applicant.Add(newApplicant);
            testEntity.SaveChanges();
public void addapplicator(string FirstName、string LastName、int StatusId、int AddressId、ListSelectedLanguages)
{
申请人newapplicator=新申请人{Name=FirstName,LastName=LastName,AddressesId=AddressId,StatusesId=StatusId};
foreach(所选语言中的变量项)
{
添加(testEntity.Languages.Where(x=>x.id==item.FirstOrDefault());
}
testEntity.applicator.Add(新申请人);
testEntity.SaveChanges();
具有下一个型号:

public class Applicant
{

    public int Id {get;set;}

    public string Name {get;set;}

    public virtual ICollection<ApplicantLanguage> Languages {get;set;}
}

public class ApplicantLanguage{

    public int Id{get;set;}

    [ForeignKey("Applicant")]
    public int ApplicantId{get;set;}

    public virtual Applicant {get;set;}

    [ForeignKey("Language")]
    public int LanguageId{get;set;}

    public virtual Language {get;set;}
}
公共类申请人
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection语言{get;set;}
}
公共类应用程序语言{
公共int Id{get;set;}
[外国钥匙(“申请人”)]
public int applicationId{get;set;}
公共虚拟申请人{get;set;}
[外键(“语言”)]
public int LanguageId{get;set;}
公共虚拟语言{get;set;}
}
你可以加上“下一步做”

public void AddApplicant(string FirstName, string  LastName, int StatusId,int AddressId, List<int>SelectedLanguages)
{
    Applicant newApplicant = new Applicant { Name = FirstName, LastName = LastName,AddressesId = AddressId,StatusesId=StatusId };

    newApplicant.Languages.Add(SelectedLanguages.Select(langId=>new ApplicantLanguage{Applicant = newApplicant, LanguageId = langId})
    testEntity.Applicant.Add(newApplicant);
    testEntity.SaveChanges();
}
public void addapplicator(string FirstName、string LastName、int StatusId、int AddressId、ListSelectedLanguages)
{
申请人newapplicator=新申请人{Name=FirstName,LastName=LastName,AddressesId=AddressId,StatusesId=StatusId};
newapplicator.Languages.Add(SelectedLanguages.Select(langId=>newapplicationlanguage{applicator=newapplicator,LanguageId=langId})
testEntity.applicator.Add(新申请人);
testEntity.SaveChanges();
}

看起来不错。有什么让你犹豫不决的吗?