поток приложений asp.net MVC3 - PullRequest
2 голосов
/ 13 апреля 2011

Я работаю над приложением asp.net. Мне нужна помощь в разработке модели, связанной с базой данных, и запросов linq.

У меня есть три таблицы (и две таблицы поиска).

1) Заголовок продукта (идентификатор заголовка продукта в качестве первичного ключа) 2) Сведения о продукте (в качестве внешнего ключа используется идентификатор заголовка продукта) 3) вложение продукта (в качестве внешнего ключа указан идентификатор продукта)

Теперь мне нужно вставить запись в БД.

а) для одной записи заголовка продукта может быть несколько записей сведений о продукте. б) для нескольких записей сведений о продукте может быть несколько вложений.

Я создал три объекта для каждой таблицы. Заголовок продукта также имеет два ключа из таблицы пользователя и таблицы истории. но на вид мне нужно показать имя пользователя вместо ключа. Должен ли я создать класс модели представления, который будет содержать все эти классы сущностей в качестве свойств, и как я могу убедиться, что в заголовок продукта вставляется первая запись, затем информация о продукте и затем вложение продукта?

Пожалуйста, предложите.

Спасибо

1 Ответ

1 голос
/ 13 апреля 2011

простой способ сделать это - использовать новую функцию Code First, которая поставляется с 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 позаботится об этом.

EDIT : вот пример кода для добавления 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();

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...