0

私はasp.net Web APIに取り組んでいます。既存のデータベースで EF 4.1 コードの最初のモデルを使用しています。私は次のようなクラスを持っています、

public class Tab1
{
public int ID{get; set;}
public string FirstName{get; set;}
public string LastName{get; set;}
}

そして、私は次のようなdbcontextを作成しました

public class EFBarContext:DbContext
    {
        public DbSet<Tab1> User{ get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            modelBuilder.Entity<Tab1>().ToTable("User");
        }
    }

最初に、テーブル「ユーザー」からすべてのレコードを取得する必要があり、名と姓に基づいてフルネームを計算する必要があり、次のようなデータ json 形式を返す必要があります。

{"ID":212,"firstname":"kio","lastname":"nmk","fullname":"kionmk"}

そのために、次のようなカスタム クラスを作成しました。

public class Tab2:Tab1
{
public fullname{get; set;}
}

そして、リストを返し ますが、次の投稿に従っているList<Tab2>ようなエラーが表示 されます.NET EF4.1 + MySQLを使用したクラス継承ですが、私の状況ではわかりません。だから私を導いてください。Schema specified is not valid error 0064: Facet 'MaxLength' must not be specified for type 'mediumtext'.

4

1 に答える 1

0

フルネームプロパティはfirstnameとlastnameから派生しているため、これを格納するための個別のテーブルをデータベースに作成しません(これはTab2:Tab1クラスで行っていることです)。

代わりに、webapiコントローラーでこのフィールドを導出できます。

using (var context = new EFBarContext())
{
    var jsonObject = context.User.Select(x => new {
        ID = x.ID,
        firstname = x.FirstName,
        lastname = x.LastName,
        fullname = string.Format("{0}{1}", x.FirstName, x.LastName),
    });
}

db内の個別の継承されたエンティティクラスは必要ありません。

于 2012-10-27T15:15:46.753 に答える