Вопрос

Я сделал такой класс:

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 не сохраняется в моей базе данных, поэтому очевидно, что я что-то упускаю.Что еще нужно сделать, чтобы сохранить связь «один ко многим»?

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

Решение

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

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);

Другие советы

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

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

дозвуковой-3-простой репозиторий

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

Fluent Nhibernate автоматически выполнит управление внешними ключами, но это НАМНОГО сложнее.

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

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