SubSonic Простой репозиторий один-ко-многим - PullRequest
1 голос
/ 19 декабря 2009

Я сделал класс, как:

public class Video
{
    public Guid VideoID { get; set; }
    public VideoCategory VideoCategory { get; set; }
    public int SortIndex { get; set; }
    public string Title { get; set; }
    public string Body { get; set; }
    public string Author { get; set; }
    public string Filename { get; set; }

    public new void Add()
    {
        this.VideoID = Guid.NewGuid();
        DB.Repository.Add(this);
    }
}

И еще как

public class VideoCategory
{
    public Guid VideoCategoryID { get; set; }
    public string Title { get; set; }

    public new void Add()
    {
        this.VideoCategoryID = Guid.NewGuid();
        DB.Repository.Add(this);
    }
}

У меня есть такой код:

        VideoCategory VideoCategory = new VideoCategory();
        VideoCategory.Title = "TestTitle";
        VideoCategory.Add();

        Video Video = new Video();
        Video.VideoCategory = VideoCategory;
        Video.SortIndex = 1;
        Video.Title = "TestTitle";
        Video.Body = "TestBody";
        Video.Author = "TestAuthor";
        Video.Filename = "TestFile.flv";
        Video.Add();

Это не сохраняет VideoCategory в моей базе данных, поэтому, очевидно, я что-то упустил. Что еще нужно сделать, чтобы сохранить отношения один ко многим?

Ответы [ 3 ]

0 голосов
/ 19 декабря 2009

Вот полезная ссылка, которая показывает, как самостоятельно управлять внешними ключами в SimpleRepository -

дозвуковой 3-simplerepository

Сам не пробовал, но похоже, что это действительно сработает.

Fluent Nhibernate автоматически сделает это за вас, но это ОЧЕНЬ более сложно.

PS Если это было полезно, пожалуйста, проголосуйте.

0 голосов
/ 20 декабря 2009

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

public class Video
{
    protected VideoCategory videoCategory;
    public Guid ID { get; set; }
    public VideoCategory VideoCategory 
    {
        get { return videoCategory; }
        set
        {
            videoCategory = value;
            VideoCategoryId = value.ID;
        }
    }
    public Guid VideoCategoryId { get; set; }
    public int SortIndex { get; set; }
    public string Title { get; set; }
    public string Body { get; set; }
    public string Author { get; set; }
    public string Filename { get; set; }
}

public class VideoCategory
{
    public Guid ID { get; set; }
    public string Title { get; set; }
}

SimpleRepository repo = new SimpleRepository(SimpleRepositoryOptions.RunMigrations);

VideoCategory videoCategory = new VideoCategory();
videoCategory.ID = Guid.NewGuid();
videoCategory.Title = "TestTitle";
repo.Add<VideoCategory>(videoCategory);

Video video = new Video();
video.ID = Guid.NewGuid();
video.VideoCategory = videoCategory;
video.SortIndex = 1;
video.Title = "TestTitle";
video.Body = "TestBody";
video.Author = "TestAuthor";
video.Filename = "TestFile.flv";
repo.Add<Video>(video);
0 голосов
/ 19 декабря 2009

Ты ничего не пропустил. Simplerepository не поддерживает один ко многим из коробки.

...