2009-09-17 5 views
4

Я пытаюсь использовать функцию SimpleRepository в Subsonic3 - прежде всего, я должен сказать большое спасибо RobC-Subsonic, который действительно скалывает, и я не могу дождаться появления дополнительных обновлений SimpleRepository , Я большой поклонник подхода к миграции (разработчик/класс управляется, а не начинается с БД).Subsonic: SimpleRepository Родительские отношения ребенка

Я здесь посмотрел: Parent and Child object in SimpleRepository , но я все еще немного смущен.

Если у меня есть эти классы определены:

public class Permit { 

     public int PermitID {get; set;} 
     public string Number { get; set; } 
     public DateTime? DateIssued { get; set; } 
     public Product product { get; set; } 
    } 

    public class Product 
    { 
     public int ProductID { get; set; } 
     public string Value { get; set; } 

    } 

, а затем я хочу, чтобы сохранить данные на разрешение, что я должен делать? Должен ли я определить ProductID в классе Permit, а затем программно связать их? Или должен работать ниже код?

var repo = new SimpleRepository("ECPermit", SimpleRepositoryOptions.RunMigrations); 
      var permit = new Permit(); 
      var product = new Product(); 

      permit.Number = "apermit"; 
      permit.DateAdded = DateTime.Now; 

      product.Value = "this is a product"; 
      repo.Add(permit); 
      permit.product = product; 
      repo.Add(product); 

Это создает таблицу Permit and Product, но нет ссылок между ними. Что я делаю не так? Thanks

+1

+1. Мы только начинаем оценивать, хотим ли мы использовать SubSonic. Однажды мои коллеги спросили, как он обрабатывает связанные таблицы, присоединяется и т. Д. Ваш вопрос J J и ответ Адама говорят мне, что это работает, по крайней мере. – David

ответ

1

Что вам нужно знать о том, что отношения создаются путем заполнения чужих ключевых значений. Так что вы делаете в своем примере, создаете разрешение и сохраняете его, а затем устанавливаете ProductID разрешения (но не сохраняете эту информацию), а затем сохраняете продукт. Если вы измените порядок своего кода следующим образом, то ProductID будет установлен правильно:

var repo = new SimpleRepository("ECPermit", SimpleRepositoryOptions.RunMigrations); 
var permit = new Permit(); 
var product = new Product(); 

product.Value = "this is a product"; 
repo.Add(product); 

permit.Number = "apermit"; 
permit.DateAdded = DateTime.Now;  
permit.ProductId = product.Id; 
repo.Add(permit); 
+0

+1. Мы только начинаем оценивать, хотим ли мы использовать SubSonic. Однажды мои коллеги спросили, как он обрабатывает связанные таблицы, присоединяется и т. Д. Ваш вопрос J J и ответ Адама говорят мне, что это работает, по крайней мере. – David

+0

Я подозреваю разрешение.Product = product.Id; должно быть действительно разрешено. ProductId = product.Id; –