これらは私の2つの単純化されたエンティティコード最初の外部キーの競合
public class Team
{
public int TeamId { get; set; }
public string Name { get; set; }
public User User { get; set; }
public int UserId { get; set; }
}
チームエンティティの設定です:
HasRequired(t => t.User)
.WithOptional(u => u.Team);
Userクラス:
public class User
{
public int UserId { get; set; }
public string Username { get; set; }
public Team Team { get; set; }
public int TeamId { get; set; }
}
私はその簡単なデモコンソールアプリケーションを作りましたユーザーをdbに挿入し、主キーを取得して、外部キーがデータベースにあることを確認します。
static void Main(string[] args)
{
var test = new InsertTest();
var userId = test.InsertUser();
test.InsertTeam(userId);
}
public int InsertUser()
{
var user = new User();
user.Username = "test1";
user.Email = "[email protected]";
user.Name = "test";
user.LastName = "Test";
user.Password = "123";
user.ConfirmPassword = "123";
UnitOfWork.UseRepository.Insert(user);
UnitOfWork.Save();
var userdB = UnitOfWork.UseRepository.Get().Where(u => u.Name == "test").FirstOrDefault();
return userdB.UserId;
}
public void InsertTeam(int userId)
{
var team = new Team();
team.Name = "Test";
team.UserId = userId;
UnitOfWork.TeamRepository.Insert(team);
UnitOfWork.Save();
}
しかし、私はデータベースにチームを挿入している間にも、外部キーの競合が発生します。実際には次に何をするかわからない
例外: INSERTステートメントがFOREIGN KEY制約 "FK_dbo.Teams_dbo.Users_TeamId"と競合しました。競合は、データベース "Fantasy"、テーブル "dbo.Users"、列 "UserId"で発生しました。 ステートメントが終了しました。
にあなたのチームのエンティティの設定を変更する
?それは私たちを助けるかもしれない詳細を持っているはずです。 – Tim
質問に追加しました – Dolja
あなたのモデルは論理的に間違っています。チームは多くのユーザーを持つことができます。 1対1のリレーシップがある – CodeNotFound