2013-05-27 3 views
0

Я пытаюсь научиться свободно, и я подумал, что начну с простого примера. Оказывается, мне что-то не хватает, потому что свободно держит попытку создать таблицу дважды, в результате чего в базе уже есть объект с именем «Автор».Fluent NHibernate Autmapping Многие для многих

Я получил следующие два класса данных:

public class Author 
{ 
    public virtual int Id {get;set;} 

    public virtual string name {get;set;} 

    public virtual IList<Book> books { get;protected set; } 

    public Author() 
    { 
     books = new List<Book>(); 
    } 


    public virtual void AddBook(Book book) 
    { 
     books.Add(book); 
     book.authors.Add(this); 
    } 
} 

public class Book 
{ 
    public virtual int Id { get; set; } 

    public virtual string name { get; set; } 

    public virtual IList<Author> authors {get; protected set; } 

    public Book() 
    { 
     authors = new List<Author>(); 
    } 

    public virtual void AddAuthor(Author author) 
    { 
     authors.Add(author); 
     author.books.Add(this); 
    } 

} 

И я обеспечиваю следующие переопределения:

public class BooksOverride : IAutoMappingOverride<Book> 
{ 
    public void Override(AutoMapping<Book> mapping) 
    { 
     mapping.HasManyToMany(map => map.authors) 
      .Cascade.All() 
      .Inverse() 
      .Table("BooksAuthors"); 

    } 
} 

public class AuthorOverride : IAutoMappingOverride<Author> 
{ 
    public void Override(AutoMapping<Author> mapping) 
    { 

     mapping.HasManyToMany(map => map.books).Cascade.All().Table("BooksAuthors"); 

    } 
} 

Вот код вставки:

using (var session = HibernateHelper.OpenSession()) 
     { 
      using (var transaction = session.BeginTransaction()) 
      { 

       var author1 = new Author { name = "john"}; 
       var author2 = new Author { name = "william" }; 

       var book1 = new Book { name = "A book"}; 

       author1.AddBook(book1); 

       session.Save(author1); 
       transaction.Commit(); 



      } 
     } 

Теперь я не могу для жизни понять, почему это не работает!

Кажется, у меня аналогичная проблема с этим: Fluent Nhibernate Many to Many Mapping Way

, но я понятия не имею, как это исправить. Возможно, это связано с тем, что я использую автоматизацию?

Если у кого-то есть идеи, я был бы чрезвычайно благодарен.

Большое спасибо!

ответ

0

«В базе данных уже есть объект с именем« Автор ».

Загляните в базу данных, чтобы убедиться, что нет таблицы для авторов.

Смежные вопросы