システム内のクラスのユーザーマッピングがあります。これらのユーザーは互いに友達になることができるため、各ユーザーには友達のユーザーのリストがありますが、作成すると、友達のテーブルや列がありません。作成さFriendList
れたUserテーブルにあります。
public class User
{
public User()
{
Games = new List<Game>();
Stats = new UserStats { Rating = 1500 };
}
public User(string username, string password)
{
Username = username;
Password = password;
Games = new List<Game>();
FriendList = new List<User>();
Stats = new UserStats { Rating = 1500 };
}
public virtual int Id { get; set; }
public virtual string Username { get; set; }
public virtual string Password { get; set; }
public virtual IList<Game> Games { get; set; }
public virtual UserStats Stats { get; set; }
public virtual IList<User> FriendList { get; set; }
}
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id)
.Column("UserId")
.GeneratedBy
.HiLo("100");
Map(x => x.Username)
.Not.Nullable();
Map(x => x.Password)
.Not.Nullable();
HasMany(x => x.Games)
.Cascade.All();
References(x => x.Stats)
.Not.Nullable()
.Cascade.All();
HasMany(x => x.FriendList)
.Cascade.All();
}
}
代わりに、これらの設定で友好的にする必要がありますか?
public class FriendConnection
{
public int Id;
public int Friend1ID;
public int Friend2ID;
}
または、この他の設定を機能させることはできますか?
これは私が使用しているセッションファクトリです
public class SessionFactory
{
private static readonly string ConnString = System.Configuration.ConfigurationManager.ConnectionStrings["MySQLConnectionString"].ConnectionString;
private static ISessionFactory _session;
private static readonly object SyncRoot = new Object();
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MySQLConfiguration
.Standard
.ConnectionString(ConnString))
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<UserMap>())
.ExposeConfiguration(UpdateSchema)
.BuildSessionFactory();
}
//
private static void UpdateSchema(Configuration cfg)
{
new SchemaUpdate(cfg).Execute(false, true);
}
public static ISession Session
{
get
{
if (_session == null)
{
lock (SyncRoot)
{
if (_session == null)
_session = CreateSessionFactory();
}
}
return _session.OpenSession();
}
}
private ISessionFactory CreateTables()
{
return Fluently.Configure()
.Database(MySQLConfiguration
.Standard
.ConnectionString(ConnString))
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<UserMap>())
.BuildSessionFactory();
}
private static void ExportSchema(Configuration cfg)
{
var schemaexport = new SchemaExport(cfg);
schemaexport.Drop(false, true);
schemaexport.Create(false, true);
}
public ISession OpenCreateTablesSession()
{
_session = _session ?? (_session = CreateTables());
return _session.OpenSession();
}
}