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