Дозвуковой: SimpleRepository Parent Дочерние отношения - PullRequest
4 голосов
/ 17 сентября 2009

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

Я посмотрел пост здесь: Родительский и дочерний объект в 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 и Product, но без связей между ними. Что я делаю неправильно? Спасибо

1 Ответ

1 голос
/ 17 сентября 2009

Здесь необходимо знать, что отношения создаются путем заполнения значений внешних ключей. Итак, в вашем примере вы создаете разрешение и сохраняете его, затем устанавливаете 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);
...