私は2つのEFエンティティを持っています:
public partial class CustomerEntity
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public virtual ICollection<RoleEntity> Roles { get; set; }
}
public partial class RoleEntity
{
public int RoleId { get; set; }
public string RoleName { get; set; }
}
これは私の挿入方法です:
public int? InsertCustomer(CustomerEntity customer)
{
_context.CustomerEntities.Add(customer);
try
{
return _context.SaveChanges();
}
catch (DbEntityValidationException exception)
{
return null;
}
}
これは、新しい顧客を作成する方法です。
public int CreateNewCustomer(string Name)
{
// Some mapping to CustomerEntity
var _customerEntity = new CustomerEntity
{
CustomerName = Name,
Roles = new List<RoleEntity>
{
new RoleEntity
{
RoleId = 1
}
}
};
return InsertCustomer(_customerEntity);
}
RoleEntity は「ルックアップ」テーブルです。つまり、事前設定されたレコードがあり、新しいレコードはありません。
新しい CustomerEntity が作成されるたびに、1 つ以上のロールが割り当てられます。データベースに新しいロールを作成せずに新しい CustomerEntity を挿入するにはどうすればよいですか? 上記の CreateNewCustomer メソッドは、新しい Customer と新しい Role をデータベースに挿入しますが、データベース内の既存の Role を参照する新しい Customer (ID 1) のみが必要です。