1
私は、継承マッピングと埋め込みオブジェクトを含むlinq2dbマッピングの複雑な例をテストしようとしています。テストプロジェクトの例に従いますが、挿入操作で例外が発生します。テストプロジェクトで挿入操作や更新操作の例が見つかりませんでした。多分私は何か間違っています。 "いけない挿入で子供を投げ、" テストケース私が手linq2db継承マッピング付き挿入
で
[Table] [Column("SomeString", "SomeModel.SomeString")] [InheritanceMapping(Code = "code1", Type = typeof(Child1))] [InheritanceMapping(Code = "code2", Type = typeof(Child2))] public abstract class Parent { [PrimaryKey] public int Id { get; } public SomeModel SomeModel { get; private set; } [Column(IsDiscriminator = true)] public string DType { get; set; } protected Parent(int id, SomeModel someModel) { Id = id; SomeModel = someModel; } } public class SomeModel { public SomeModel(string someString) { SomeString = someString; } [NotNull] public string SomeString { get; } internal SomeModel() { } } public class Child1 : Parent { public Child1(int id, SomeModel someModel, int threshold) : base(id, someModel) { Threshold = threshold; DType = "child1"; } [Column] public int Threshold { get; } } public class Child2 : Parent { public Child2(int id, SomeModel someModel, string code) : base(id, someModel) { Code = code; DType = "child2"; } [Column] public string Code { get; private set; } } [Test] [TestCase("Dont cast child in insert")] [TestCase("Cast child in insert")] public void TestInheritanceMapping(string testMode) { var db = new DbNorthwind(); db.Execute(@"IF OBJECT_ID('dbo.Parent', 'U') IS NOT NULL drop table Parent"); db.CreateTable<Parent>(); Console.WriteLine(db.GetTable<Child1>().Select(c => c.Threshold).Any()); switch (testMode) { case "Dont cast child in insert": db.Insert(new Child1(1, new SomeModel("SomeString"), 1)); db.Insert(new Child2(1, new SomeModel("SomeString"), "somecode!")); break; case "Cast child in insert": db.Insert<Parent>(new Child1(1, new SomeModel("SomeString"), 1)); db.Insert<Parent>(new Child2(1, new SomeModel("SomeString"), "somecode!")); break; } } public class DbNorthwind : DataConnection { public DbNorthwind() : base("SqlServer", From.ConnectionStrings.Get("storage.sqlserver")) { } }
"System.Data.SqlClient.SqlException:無効なオブジェクト名 'CHILD1'"
"インサート内キャストの子" で
:
"System.ArgumentExceptionの: "しきい値" はタイプのメンバーではない"
テーブル "親" が作成されますが適切に "db.CreateTable();"ステップ:
また、選択動作が助けを
おかげで動作するようです!