1

私は2つのエンティティを持っています:

public class User 
{
   public int Id { get; set; }
   public string UserName { get; set; }
}

public class Product 
{
   public int Id { get; set; }
   public string Name { get; set; }
   public string CreatedUserName { get; set }
}

データベース スキーマには、テーブル内の列をProducts指すテーブル内の外部キーが含まれています。外部キーをナビゲートし、プロパティの列の値を取得するように Entity Framework に指示する方法が必要です。IdProductsUserNameCreatedUserName

これは可能ですか?製品に User エンティティ全体を持たせたくありません。

ありがとう!

4

2 に答える 2

3

私は同じことを調べていて、「エンティティ分割」と呼ばれる手法を見つけました http://www.deliveron.com/blog/post/Entity-Splitting-in-Code-First-Entity-Framework.aspx

したがって、コードに基づいて、次のことができるように見えます。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity()
        // Map to the Product table
        .Map(map =>
        {
            map.Properties(p => new {
                p.Id,
                p.Name
            });

            map.ToTable("Product");
        })
        // Map to the User table
        .Map(map =>
        {
            map.Properties(p => new {
                p.CreatedUserName
            });

            map.ToTable("User");
        });
}
于 2015-01-23T15:17:04.563 に答える
1

これは可能ですか?製品にユーザーエンティティ全体を含めたくありません。

製品のデータベースビューを実行する場合を除いて、いいえ。マップしようとするものは、もはや実際のエンティティではありません。ビューモデルに似ているので、投影を使用しないのはなぜですか?

var productView = context.Products
                         .Where(p => p.Id == ...)
                         .Select(p => new ProductView {
                             Id = p.Id,
                             Name = p.Name,
                             CreatedUserName = p.User.UserName
                         });
于 2012-12-04T10:51:02.683 に答える