2
私は「1対多数」の関係を持つC#で2つのクラスを持っています。SQLite one-to-many
public class LocalCompany : INotifyPropertyChanged
{
[Key]
public int Id { get; set; }
private bool isActive;
public bool IsActive { get { return isActive; } set { isActive = value; OnPropertyChanged("IsActive"); } }
private string name;
public string Name { get { return name; } set { name = value; OnPropertyChanged("Name"); } }
private string address;
public string Address { get { return address; } set { address = value; OnPropertyChanged("Address"); } }
private string unp;
public string UNP { get { return unp; } set { unp = value; OnPropertyChanged("UNP"); } }
public ICollection<LocalUser> LocalUsers { get; set; }
public override string ToString()
{
return Name;
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string prop)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
public class LocalUser : INotifyPropertyChanged
{
[Key]
public int Id { get; set; }
private bool isActive;
public bool IsActive { get { return isActive; } set { isActive = value; OnPropertyChanged("IsActive"); } }
private string email;
public string Email { get { return email; } set { email = value; OnPropertyChanged("Email"); } }
private string name;
public string Name { get { return name; } set { name = value; OnPropertyChanged("Name"); } }
private string address;
public string Address { get { return address; } set { address = value; OnPropertyChanged("Address"); } }
private string passportNumber;
public string PassportNumber { get { return passportNumber; } set { passportNumber = value; OnPropertyChanged("PassportNumber"); } }
private string passportIssue;
public string PassportIssue { get { return passportIssue; } set { passportIssue = value; OnPropertyChanged("PassportIssue"); } }
public ICollection<LocalCard> LocalCards { get; set; }
public int? LocalCompanyId { get; set; }
private LocalCompany localCompany;
public LocalCompany LocalCompany { get { return localCompany; } set { localCompany = value; OnPropertyChanged("LocalCompany"); } }
public override string ToString()
{
return Name;
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string prop)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
は、データベースとの相互作用のために私は、Entity Frameworkの6
- は、私が "AAA" の名前でLocalCompany項目を作成し、DBに保存しています。これにはId "1"が割り当てられます。
- "Alex"という名前のLocalUserアイテムを作成しています.LocalCompanyプロパティに会社AAAを記述しています。
ただし、EFはLocalCompanyIdプロパティに1を書き込んでいません。 EFは "2"のIDを持つ第2のAAA会社を作成し、2をLocalCompanyIdに書き込みます。
LocalCompanyIdを書いても同じ結果が得られます。 私の間違いは何ですか? 悪い英語を申し訳ありません。
'LocalCompanyIdを書くと同じ結果になります。 LocalCompanyId = 1の新しいLocalUserを作成した場合、EFがId = 2のLocalCompanyを作成したとは思わない。 – oerkelens
LocalCompanyIdに1を書き込んでLocalCompanyに何も書き込まないと、2番目のAAA会社最初のケースのように2をLocalCompanyIdに書き込む。 LocalCompanyIdに1を書き込み、会社オブジェクトをLocalCompanyに書き込むと、EFは2番目のIdA会社を作成し、2をLocalCompanyIdに書き込むことになります。 – Phenman
問題が見つかりました!私は企業オブジェクトをLocalCompanyプロパティに書き込む前に問題があります。 – Phenman