Note that there are some explanatory texts on larger screens.

plurals
  1. POErrors: How to save a many-to-many relationship in Castle Active Record?
    primarykey
    data
    text
    <p>I've been trying for hours to get many-to-many relationship to save with Castle ActiveRecord. What am I doing wrong? I can't find anything in the documentation or on google. There is data in the database.</p> <p>Courses have a many to many relationship with Books.</p> <p>Test code.</p> <pre><code>Database.Course c = new Database.Course(); c.Number = "CS 433"; c.Name = "Databases"; c.Size = 34; c.Books = Database.Book.FindAll(); c.Save(); </code></pre> <p>Also doesn't work</p> <pre><code>foreach(Database.Book b in Database.Book.FindAll()){ c.Books.Add(b); } </code></pre> <p>Database Classes</p> <pre><code>[ActiveRecord] public class Course : ActiveRecordValidationBase&lt;Course&gt; { private int? id; private string number; private string name; private string description; private int size; //number of students in class //references private IList books = new ArrayList(); public override string ToString() { return FormattedName; } public string FormattedName { get { return string.Format("{0} - {1}", Number, Name); } } [PrimaryKey] public int? Id { get { return id; } set { id = value; } } [Property, ValidateNonEmpty] public string Number { get { return number; } set { number = value; } } [Property, ValidateNonEmpty] public string Name { get { return name; } set { name = value; } } [Property(ColumnType="StringClob")] public string Description { get { return description; } set { description = value; } } [Property] public int Size { get { return size; } set { size = value; } } [HasAndBelongsToMany(typeof(Book), Table = "BookCourse", ColumnKey = "course_id", ColumnRef = "book_id", Inverse = true)] public IList Books { get { return books; } set { books = value; } } } [ActiveRecord] public class Book : ActiveRecordValidationBase&lt;Book&gt; { private int? id; private string title; private string edition; private string isbn; private bool is_available_for_order; //relations private IList authors = new ArrayList(); private IList bookordercount = new ArrayList(); private IList courses = new ArrayList(); private Inventory inventory; public override string ToString() { return FormattedName; } public string FormattedName { //* get { string str; if (Edition == null || Edition == "") str = Title; else str = string.Format("{0} ({1})", Title, Edition); if (Authors.Count != 0) { return string.Format("{0} by {1}", str, FormattedAuthors); } else { return str; } } /*/ get { return Title; } //*/ } public string FormattedAuthors { get { if (Authors.Count == 0) return ""; StringBuilder sb = new StringBuilder(); int i = 0, end = Authors.Count; foreach (Author a in Authors) { i++; sb.Append(a.FormattedName); if (i != end) sb.Append("; "); } return sb.ToString(); } } [PrimaryKey] public int? Id { get { return id; } set { id = value; } } [Property, ValidateNonEmpty] public string Title { get { return title; } set { title = value; } } [Property] public string Edition { get { return edition; } set { edition = value; } } [Property, ValidateNonEmpty] public string Isbn { get { return isbn; } set { isbn = value; } } [Property] public bool IsAvailableForOrder { get { return is_available_for_order; } set { is_available_for_order = value; } } //relations [HasAndBelongsToMany(typeof(Author), Table = "BookAuthor", ColumnKey = "book_id", ColumnRef = "author_id")] public IList Authors { get { return authors; } set { authors = value; } } [HasMany(typeof(BookOrderCount), Table = "BookOrderCounts", ColumnKey = "BookId")] public IList BookOrderCount { get { return bookordercount; } set { bookordercount = value; } } [HasAndBelongsToMany(typeof(Course), Table = "BookCourse", ColumnKey = "book_id", ColumnRef = "course_id")] public IList Courses { get { return courses; } set { courses = value; } } [OneToOne] public Inventory Inventory { get { return inventory; } set { inventory = value; } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload