Viele zu Viele Beziehung mit Fluent NHibernate
Ich bin immer folgende Fehlermeldung: "Kann nicht herausfinden, was die andere Seite einer viele-zu-viele-sein sollte."
Team Organisation:
public class Team : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
public IList<Employee> Employee { get; set; }
public Team()
{
Employee = new List<Employee>();
}
}
Employee-Entität:
public class Employee : IEntity
{
public int Id { get; set; }
public String LastName { get; set; }
public string FirstName { get; set; }
public IList<Team> Team { get; set; }
public string EMail { get; set; }
public Employee()
{
Team = new List<Team>();
}
}
Team mapping:
public class TeamMap : ClassMap<Team>
{
public TeamMap()
{
//identity mapping
Id(p => p.Id);
//column mapping
Map(p => p.Name);
//relationship mapping
HasManyToMany<Employee>(m => m.Employee);
}
}
Mitarbeiter-Zuordnung:
public class EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
//identifier mapping
Id(p => p.Id);
//column mapping
Map(p => p.EMail);
Map(p => p.LastName);
Map(p => p.FirstName);
//relationship mapping
HasManyToMany<Team>(m => m.Team);
}
}
Niemand hat eine Antwort?
Edit: Der Fehler tritt auf folgenden code:
public static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c=>
c.Database("Ariha")
.TrustedConnection()
.Server("localhost")
).ShowSql())
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<BookMap>()
.AddFromAssemblyOf<MagazineMap>()
.AddFromAssemblyOf<EmployeeMap>()
.AddFromAssemblyOf<TeamMap>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
edit: hier die ganze Lösung: http://rapidshare.com/files/309653409/S.O.L.I.D.Ariha.rar.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie code, der bewirkt, dass Ihr Fehler? Ich habe nur versucht, Ihre mappings und Sie scheinen gut zu funktionieren (auf fließend 1.0 RTM und NH 2.1.1 GA mit einer SQLite-Datenbank), mit einer geringfügigen änderung an Ihrem EmployeeMap (ich angenommen haben, dass die Mitarbeiter-team-Beziehung ist bidirektional, und als pro Dokumentation müssen Sie markieren einer Seite als inverse).
Natürlich, wenn die Mitarbeiter-team-Beziehung ist nicht bidirektional, ich hätte gedacht, Sie sollten in der Lage sein, zu geben eine andere .Tabelle(name) für jeden - aber ich habe nicht getestet, und Sie scheinen immer unterschiedliche Ergebnisse sowieso (daher, warum die Bereitstellung von Beispiel-code wäre am besten)
Ich würde auch hinzufügen, dass ich vermute, Satz-Semantik (anstelle Tasche) wäre besser geeignet für die Mitarbeiter.Team und das Team.Mitarbeiter-Eigenschaften. (Unabhängig davon, tun Sie nichts, meint Ordnung ist erhalten, es gibt keine Garantie, dass es sein wird)
Vorgeschlagen mapping und Beispiel:
Fluent NHibernate versucht zu bestimmen, welche die andere Seite einer viele-zu-viele-Beziehung ist, indem wir die Namen der entities und die Sammlung von Eigenschaften. Ich glaube es funktioniert nicht in Ihrem Fall, weil Sie Ihre Sammlung Eigenschaften sind nicht plural; versuchen Sie, umbenennen Sie Ihre Sammlungen
Employees
undTeams
bzw.Andere Weg ist, um manuell die viele-zu-viele-Tabelle name auf beiden Seiten, wie dies deaktiviert die Vorhersage.