asp.net MVC3应用程序流程

时间:2011-04-13 11:28:52

标签: 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)对于多个产品详细记录,可以有多个附件。

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

请建议。

由于

1 个答案:

答案 0 :(得分:1)

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

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

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;}
}

对于广告订单,只需添加您的ProductHeader(在向其添加ProductDetails和ProductAttachments之后),EF将负责处理。

修改: 这是添加ProductHeader的示例代码:

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();

希望这有帮助。