Pregunta

Hice una clase como:

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

Y otra como

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

Entonces tengo un código como:

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

No guarda el VideoCategory en mi base de datos, así que obviamente me falta algo. Lo que más se necesita para hacer para salvar una relación de uno a muchos?

¿Fue útil?

Solución

Probablemente se podría simplemente hacer lo siguiente, es probable que desee poner en orden, pero que hasta que se asegurará de que su valor de clave externa se rellena:

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

Otros consejos

Usted no está perdiendo nada. Simplerepository no soporta uno a muchos fuera de la caja.

Aquí está un enlace útil que muestra cómo mangage claves externas a sí mismo en SimpleRepository -

subsónico-3-simplerepository

No han probado a mí mismo, pero parece que sería en realidad el trabajo.

Fluido Nhibernate va a hacer esta gestión clave externa de forma automática, pero es mucho más complejo.

PD Si esto era útil, por favor vote para arriba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top