asp.net MVC3应用程序流

asp.net MVC3应用程序流,asp.net,sql,sql-server-2008,asp.net-mvc-3,entity-framework-4,Asp.net,Sql,Sql Server 2008,Asp.net Mvc 3,Entity Framework 4,我正在开发一个asp.net应用程序。我需要帮助设计与数据库相关的模型和linq查询 我有三个表(和两个查找表) 1) 产品标题(产品标题id作为主键) 2) 产品详细信息(产品标题id为外键) 3) 产品附件(产品详细信息id为外键) 现在,我需要在db中插入记录 a) 对于一个产品标题记录,可以有多个产品详细信息记录 b) 对于多个产品明细记录,可以有多个附件 我为每个表创建了三个实体。产品标题还有来自用户表和历史表的两个键。但在视图中,我需要显示用户名而不是密钥。我应该创建一个视图模型类来

我正在开发一个asp.net应用程序。我需要帮助设计与数据库相关的模型和linq查询

我有三个表(和两个查找表)

1) 产品标题(产品标题id作为主键) 2) 产品详细信息(产品标题id为外键) 3) 产品附件(产品详细信息id为外键)

现在,我需要在db中插入记录

a) 对于一个产品标题记录,可以有多个产品详细信息记录 b) 对于多个产品明细记录,可以有多个附件

我为每个表创建了三个实体。产品标题还有来自用户表和历史表的两个键。但在视图中,我需要显示用户名而不是密钥。我应该创建一个视图模型类来保存所有这些实体类作为属性吗?我如何确保在产品标题、产品详细信息和产品附件中插入第一条记录

请建议


谢谢

一个简单的方法是使用EF 4.1附带的新的代码优先功能

您可以这样创建“实体”:


希望这能有所帮助。

我需要先添加productheader,然后在子实体中使用新生成的id。我该怎么做?@DotnetSparrow-EF将为您处理此问题,只要模型定义正确地重新测试实体。@DotnetSparrow:您实际上不必“手动”执行此操作。我已经更新了我的答案,以显示如何添加ProductHeader
public class ProductHeader
{
   public int ID {get; set;}

   public virtual ICollection<ProductDetail> ProductDetails {get; set;}

   //Other properties
}

public class ProductDetail
{
   public int ID {get; set;}

   public virtual ICollection<ProductAttachment> ProductAttachments {get; set;}

   //Other properties
}

public class ProductAttachment
{
   public int ID {get; set;}

   // you can have a navigation property here for the user, this allows you to access his name
   public virtual User User {get; set;}
   //Other properties
}

public class MyContext:DbContext
{
    public DbSet<ProductHeader> ProductHeaders {get; set;}
    public DbSet<ProductDetail> ProductDetails {get; set;}
    public DbSet<ProductAttachment> ProductAttachment {get; set;}
}
var context=new MyContext();
var ph=new ProductHeader();
ph.User=user;
var pd=new ProductDetail();
pd.ProductAttachments.Add(new ProductAttachment());
ph.ProductDetails.Add(pd);
context.ProductHeaders.Add(ph);
context.SaveChanges();