1から0..1の関係を達成するEntity Frameworkに固有の問題があるようです。 私は2つのエンティティを持っています。エンティティフレームワークのコード最初の1から1..0の関係
- FamilyMember
- 人の詳細情報を格納し、私はプロフィール画像が保存されているが、それは必須ではありませんImageStoreを持ってFamilyMember ImageStore
。そのため、ファミリーメンバーにはプロフィール画像がある場合とない場合があります。 私が持っている問題は:ImageStoreに格納されているプロフィール画像を持っているときに、ImageStoreデータでFamilyMemberオブジェクトを取得しますが、ImageStoreにプロフィール画像がないときは、全体のFamilyMemberオブジェクトがImageStoreオブジェクトFamilyMemberがnullの場合 私はこの問題を1日助けに戻る前に苦労しました。
私は、私は二つのモデルを見てみましょうEntity Frameworkの6.0
をSQLiteにも使用しています:
FamilyMember
public class FamilyMember : PropertyChangedNotification
{
[Key]
public long FamilyMemberId { get; set; }
[ForeignKey("ImageStore")]
public int? ProfilePictureId { get; set; }
public ImageStore ImageStore { get; set; }
}
ImageStore
public class ImageStore : PropertyChangedNotification
{
[Key]
public int ImageStoreId { get; set; }
[Required]
public string ImageFile { get; set; }
[Required]
public Byte[] ImageBlob { get; set; }
public string FileName { get; set; }
[Required]
public int FileSize { get; set; }
}
ここ
public class ADataContext : DbContext
{
public ADataContext()
: base("name=ADataContext")
{
}
public ADataContext(string filename, string password)
: base(new SQLiteConnection()
{
ConnectionString =
new SQLiteConnectionStringBuilder()
{DataSource = filename, ForeignKeys = true, Password = password }
.ConnectionString
}, true)
{
}
public ADataContext(string filename)
: base(new SQLiteConnection()
{
ConnectionString =
new SQLiteConnectionStringBuilder() { DataSource = filename, ForeignKeys = true }
.ConnectionString
}, true)
{
Database.SetInitializer<ADataContext>(null);
}
public DbSet<FamilyMember> FamilyMembers { get; set; }
public DbSet<ImageStore> ImageStore { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<FamilyMember>().HasOptional(s => s.ImageStore);
}
}
私のDataContextされており、ここで私は私が思うに、私は最終的に問題の解決策を見つけた
familyMember = _dbContext.FamilyMembers.Include("ImageStore").FirstOrDefault(x => x.FamilyMemberId == memberId);
Navプロパティは 'virtual'であると仮定していくつかの問題を解決するかもしれない – BradleyDotNET
* FamilyMember全体のオブジェクトは、FamilyMemberのImageStoreオブジェクトの代わりにnullになります* *奇妙なことに、 'ProfilePictureId'と' ImageStore'はnullですが、それでも受け入れられます。 'FamilyMemberId'もnullですか?あなたの 'public ImageStore ImageStore'は' public virtual ImageStore ImageStore'でなければなりません([virtual keyword](https://msdn.microsoft.com/en-us/library/9fkccyh4.aspx)ナビゲーションプロパティのオーバーライド) –
右..それは私が言っていたものです – BradleyDotNET