Как мне настроить мои POCO с помощью Subsonic 3 и SimpleRepostitory?или где находится конвенция?

StackOverflow https://stackoverflow.com/questions/1827630

Вопрос

Есть ли где-нибудь подробное описание того, как настроить ваши POCO при использовании SimpleRepository с SubSonic 3?Похоже, что это соглашение о конфигурации, но я не могу найти, где объясняется это соглашение.

http://www.subsonicproject.com/docs/Conventions похоже, он предназначался для версии 2.0 и также помечен как неполный.(КСТАТИ:Я бы хотел помочь реорганизовать документы в версии 2.0 и 3.0, поскольку текущие документы немного сбивают с толку, на какую версию они ссылаются.)

Например, я хотел бы знать, как бы я приступил к созданию

отношения "один к одному"

Пользователь <=> Профиль

class User {
  Id
  ProfileId instead of Profile? or is Profile profile possible?
}

class Profile {
  Id
  UserId instead of User? or is User user possible?
}

Отношение "Один ко многим"

class User {
  Id
  IList<Post> Posts (?) or IList<int> PostIds (?) or is this implied somehow?  or is this just wrong?
}

class Post {
  Id
  UserId instead of User? or is User user possible?
}

Многие-ко-многим

Я предполагаю, что мне нужно было бы настроить таблицу "много ко многим"?

class User {
  IList<Blog> Blogs (?) or IList<int> BlogIds (?) or is this implied somehow?
}

class BlogsUsers {  // Do I have to create this class?
  UserId
  BlogId
}

class User {
  IList<User> Users (?) or IList<int> UserIds (?) or is this implied somehow?
}

В примере решения не похоже, что они установлены, поэтому мне интересно, как бы вы поступили в случае выполнения (мое предположение исходит из примера):

один-к-одному

User.Profile

r.Single<Profile>(p=>p.User == userId);

родитель по принципу "один ко многим"

Post.User

id = r.Single<Post>(postId).UserId;
r.Single<User>(id); // which kind of stinks with two queries, JOIN?

дети по принципу "один ко многим"

User.Posts

r.Find<Post>(p=>p.UserId == userId)

или много-ко-многим

User.Blogs

ids = r.Find<BlogsUsers>(bu=>bu.UserId == userId);
r.Find<Blog>(b=>b.BlogId == ids);  // again with the two queries?  :)

Blog.Users

ids = r.Find<BlogsUsers>(bu=>bu.BlogId == blogId);
r.Find<User>(u=>u.UserId == ids);  // again with the two queries?  :)

Я бы предположил, что должен быть способ не иметь двух запросов и чтобы эти свойства каким-то образом уже были автоматически сгенерированы.По правде говоря, вчера вечером у меня был всего час, чтобы поиграть со всем этим, поэтому я немного боюсь, что Роб накричит на меня.Мне очень ЖАЛЬ!:P

Если они не созданы автоматически, то где находятся представления и процедуры хранения для версии 3.0?Пожалуйста, дайте мне ссылку и на них, пока вы этим занимаетесь, товарищ Соэр.

Это было полезно?

Решение

Вероятно, это ваше лучшее место для начала:http://subsonicproject.com/docs/Using_SimpleRepository

Отношения настраиваются вами в коде, и мы не переносим их в базу данных (пока - надеюсь, скоро).В идеале вы настраиваете свою модель так, как вам нужно, и когда вы будете готовы, вы идете и вручную "укрепляете" свои связи в базе данных.Это делается для уменьшения трений во время разработки - на самом деле о целостности данных не стоит беспокоиться при создании сайта.

Тем не менее, я знаю, что людям нужна эта функция - мне просто нужно ее создать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top