我有两个类:LicenseType 和 EntityType。
[Table("LicenseType")]
public class LicenseType : ComplianceBase, INotifyPropertyChanged
{
private List<Certification> _certifications = new List<Certification>();
private List<EntityType> _entityTypes = new List<EntityType>();
public List<EntityType> EntityTypes
{
get { return _entityTypes; }
set { _entityTypes = value; }
}
public List<Certification> Certifications
{
get { return _certifications; }
set { _certifications = value; }
}
}
和
[Table("EntityType")]
public class EntityType : ComplianceBase, INotifyPropertyChanged
{
private List<LicenseType> _licenseTypes = new List<LicenseType>();
public List<LicenseType> LicenseTypes
{
get { return _licenseTypes; }
set
{
_licenseTypes = value;
// OnPropertyChanged();
}
}
}
两者都来自ComplianceBase,
public class ComplianceBase
{
private int _id;
private string _name;
private string _description;
public string Description
{
get { return _description; }
set
{
if (_description == value) return;
_description = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
public int Id
{
get { return _id; }
set
{
if (value == _id) return;
_id = value;
OnPropertyChanged();
}
}
public string Name
{
get { return _name; }
set
{
if (value == _name) return;
_name = value;
OnPropertyChanged();
}
}
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
我想要做的是将 EntityType 与一个或多个 LicenseTypes 相关联,例如,EntityType“Primary Lender”可以与两个 LicenseTypes,“Lender License”和“Mortgage License”相关联。在这种情况下,我想要 EntityType 表中的一条记录“Primary Lender”和我的 LicenseType 表中的两条记录:“Lender License”和“Mortgage License”。
将相关 LicenseTypes 添加到我的 EntityType 的代码是通过调用完成的:
_currentEntity.LicenseTypes.Add(licenseType);
然后打电话_context.SaveChanges()
;
还有一个附加表“EntityTypeLicenseTypes”用作关联这两个表的查找表。有两条记录将 EntityType 与两个相关的 LicenseType 连接起来。
这有效。但是,我的代码还添加(它复制)LicenseType 记录,并将其添加到正在关联的那些记录的 LicenseType 表中。
我怎样才能阻止这种情况发生?