NuGet を使用して次のコンソール アプリケーションにインストールされた Entity Framework for SQL Compact 4.3.1 に問題があります (レプリケートする場合は、プロジェクト プロパティ -> 出力タイプ = Windows アプリケーション)。
namespace TestEntityFrameworkInheritance
{
class DbExampleRecord
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
class ExampleModel : DbExampleRecord
{
public TimeSpan NotInDb { get; set; }
}
class DataContext : DbContext
{
public DbSet<DbExampleRecord> ExampleRecords { get; set; }
}
static void Main()
{
Database.SetInitializer<DataContext>(
new DropCreateDatabaseIfModelChanges<DataContext>());
using (var db = new DataContext())
{
var dummy = db.ExampleRecords.Add(
new DbExampleRecord{ Name="test record"});
db.SaveChanges();
}
}
}
db.ExampleRecords.Add( ...
次の方法で失敗します。
タイプ 'System.NotSupportedException' の未処理の例外が EntityFramework.dll で発生しました
追加情報: プリミティブ型 'Time' の EDM 型 'Edm.Time(Nullable=True)' に対応するストア型はありません
ExampleModel
つまり、EF は timespan プロパティをデータベースに入れようとしていますExampleModel
が、エンティティ クラスの 1 つから継承することを除いて、コンテキストとは何の関係もありません。
誰かがここで何が起こっているのかを理解するのを手伝ってくれますか?