Fluent NHibernate 映射不适用于某些表
Fluent NHibernate Mapping Doesn't Work For Some Tables
我在同一个项目中使用 Fluent Migrator 和 Fluent NHibernate,但是当我使用 Database.Session.Query<ENTITY>().**
启动查询时,有些 return 数据,有些则没有。我不知道我哪里做错了。
Returns 用户的数据库查询:
var users = Database.Session.Query<Models.User>()
.Where(u => u.Id == id)
.ToList();
数据库查询 不 Return 用户:
var ourStocks = Database.Session.Query<Models.Stock>()
.Where(stock => stock.Belongstouser == id)
.OrderByDescending(stc => stc.StockId)
.ToList();
Models.User:
public class User
{
public virtual int Id { get; set; }
public virtual string Username { get; set; }
public virtual string Email { get; set; }
public virtual string adSoyad { get; set; }
public virtual string addressMah { get; set; }
public virtual string addRessCadSk { get; set; }
public virtual string addressIl { get; set; }
public virtual string addressIlce { get; set; }
public virtual int Balance { get; set; }
public virtual string PasswordHash { get; set; }
public virtual IList<Roles> Roles { get; set; }
public User()
{
Roles = new List<Roles>();
}
public virtual void SetPassword(string password)
{
PasswordHash = BCrypt.Net.BCrypt.HashPassword(password, 13);
}
public virtual bool CheckPassword(string password)
{
var pass = BCrypt.Net.BCrypt.Verify(password, PasswordHash);
return BCrypt.Net.BCrypt.Verify(password, PasswordHash);
}
}
public class UsersMap : ClassMapping<User>
{
public UsersMap()
{
Table("users");
Schema("projefinalodevi");
Id(x => x.Id, map => map.Generator(Generators.Identity));
Property(x => x.Username, map => map.NotNullable(true));
Property(x => x.Email, map => map.NotNullable(true));
Property(x => x.adSoyad, map => map.NotNullable(true));
Property(x => x.addressMah, map => map.NotNullable(true));
Property(x => x.addRessCadSk, map => map.NotNullable(true));
Property(x => x.addressIl, map => map.NotNullable(true));
Property(x => x.addressIlce, map => map.NotNullable(true));
Property(x => x.Balance, map => map.NotNullable(true));
Property(x => x.PasswordHash, map => { map.Column("password_hash"); map.NotNullable(true); });
Bag(x => x.Roles, x => {
x.Table("role_users");
x.Key(k => k.Column("userid"));
}, x => x.ManyToMany(k => k.Column("roleid")));
}
}
Models.Stock:
public class Stock
{
public virtual int StockId { get; set; }
public virtual int Description { get; set; }
public virtual string Unitprice { get; set; }
public virtual int Belongstouser { get; set; }
public virtual int Quantityinstock { get; set; }
}
public class StockMap : ClassMapping<Stock>
{
public StockMap()
{
Table("stock");
Schema("projefinalodevi");
Lazy(true);
Id(x => x.StockId, map => { map.Column("stock_id"); map.Generator(Generators.Identity); });
Property(x => x.Description, map => map.NotNullable(true));
Property(x => x.Unitprice, map => map.NotNullable(true));
Property(x => x.Belongstouser, map => map.NotNullable(true));
Property(x => x.Quantityinstock, map => { map.Column("quantityInStock"); map.NotNullable(true); });
}
}
最后,我的迁移:
public override void Down()
{
Execute.Sql("DELETE FROM projeFinalOdevi.roles where name = 'user'");
Execute.Sql("DELETE FROM projeFinalOdevi.roles where name = 'admin'");
Delete.Table("role_users");
Delete.Table("roles");
Delete.Table("sales");
Delete.Table("stock");
Delete.Table("users");
}
public override void Up()
{
Create.Table("users")
.WithColumn("id").AsInt32().Identity().PrimaryKey()
.WithColumn("userName").AsString(50).NotNullable()
.WithColumn("eMail").AsString(50).NotNullable()
.WithColumn("balance").AsInt32().NotNullable()
.WithColumn("adSoyad").AsString(128).NotNullable()
.WithColumn("addressMah").AsString(40).NotNullable()
.WithColumn("addressCadSk").AsString(128).NotNullable()
.WithColumn("addressil").AsString(128).NotNullable()
.WithColumn("addressilce").AsString(128).NotNullable()
.WithColumn("password_hash").AsString(256).NotNullable();
Create.Table("stock")
.WithColumn("stock_id").AsInt32().Identity().PrimaryKey()
.WithColumn("description").AsString(256).NotNullable()
.WithColumn("unitPrice").AsInt32().NotNullable()
.WithColumn("belongsToUser").AsInt32().NotNullable()
.WithColumn("quantityInStock").AsInt32().NotNullable();
Create.Table("sales")
.WithColumn("sales_id").AsInt32().Identity().PrimaryKey()
.WithColumn("stock_id").AsInt32().ForeignKey("stock", "stock_id").OnDelete(System.Data.Rule.Cascade).NotNullable()
.WithColumn("date").AsDate().NotNullable()
.WithColumn("quantity").AsInt32().NotNullable()
.WithColumn("sale_sum").AsInt32().NotNullable();
Create.Table("roles")
.WithColumn("id").AsInt32().Identity().PrimaryKey()
.WithColumn("name").AsString(128);
Create.Table("role_users")
.WithColumn("userid").AsInt32().ForeignKey("users", "id").OnDelete(System.Data.Rule.Cascade)
.WithColumn("roleid").AsInt32().ForeignKey("roles", "id").OnDelete(System.Data.Rule.Cascade);
Execute.Sql("INSERT INTO projeFinalOdevi.roles (name) VALUES ('admin')");
Execute.Sql("INSERT INTO projeFinalOdevi.roles (name) VALUES ('user')");
/* CMD line;
migrate -a D:\ProjeFinalOdevi\ProjeFinalOdevi\bin\ProjeFinalOdevi.dll -db MySql -conn "Data Source=127.0.0.1;Database=projefinalodevi;uid=root;pwd=MySQLPassis8420;"
*//* CMD line;
migrate -a C:\Users\Atabay\source\repos\ProjeFinalOdevi\ProjeFinalOdevi\bin\ProjeFinalOdevi.dll -db MySql -conn "Data Source=127.0.0.1;Database=ProjeFinalOdevinew;uid=root;pwd=root;"
*/
}
感谢帮助,谢谢 :)。
原来我不是 registering
stock
。
我在同一个项目中使用 Fluent Migrator 和 Fluent NHibernate,但是当我使用 Database.Session.Query<ENTITY>().**
启动查询时,有些 return 数据,有些则没有。我不知道我哪里做错了。
Returns 用户的数据库查询:
var users = Database.Session.Query<Models.User>()
.Where(u => u.Id == id)
.ToList();
数据库查询 不 Return 用户:
var ourStocks = Database.Session.Query<Models.Stock>()
.Where(stock => stock.Belongstouser == id)
.OrderByDescending(stc => stc.StockId)
.ToList();
Models.User:
public class User
{
public virtual int Id { get; set; }
public virtual string Username { get; set; }
public virtual string Email { get; set; }
public virtual string adSoyad { get; set; }
public virtual string addressMah { get; set; }
public virtual string addRessCadSk { get; set; }
public virtual string addressIl { get; set; }
public virtual string addressIlce { get; set; }
public virtual int Balance { get; set; }
public virtual string PasswordHash { get; set; }
public virtual IList<Roles> Roles { get; set; }
public User()
{
Roles = new List<Roles>();
}
public virtual void SetPassword(string password)
{
PasswordHash = BCrypt.Net.BCrypt.HashPassword(password, 13);
}
public virtual bool CheckPassword(string password)
{
var pass = BCrypt.Net.BCrypt.Verify(password, PasswordHash);
return BCrypt.Net.BCrypt.Verify(password, PasswordHash);
}
}
public class UsersMap : ClassMapping<User>
{
public UsersMap()
{
Table("users");
Schema("projefinalodevi");
Id(x => x.Id, map => map.Generator(Generators.Identity));
Property(x => x.Username, map => map.NotNullable(true));
Property(x => x.Email, map => map.NotNullable(true));
Property(x => x.adSoyad, map => map.NotNullable(true));
Property(x => x.addressMah, map => map.NotNullable(true));
Property(x => x.addRessCadSk, map => map.NotNullable(true));
Property(x => x.addressIl, map => map.NotNullable(true));
Property(x => x.addressIlce, map => map.NotNullable(true));
Property(x => x.Balance, map => map.NotNullable(true));
Property(x => x.PasswordHash, map => { map.Column("password_hash"); map.NotNullable(true); });
Bag(x => x.Roles, x => {
x.Table("role_users");
x.Key(k => k.Column("userid"));
}, x => x.ManyToMany(k => k.Column("roleid")));
}
}
Models.Stock:
public class Stock
{
public virtual int StockId { get; set; }
public virtual int Description { get; set; }
public virtual string Unitprice { get; set; }
public virtual int Belongstouser { get; set; }
public virtual int Quantityinstock { get; set; }
}
public class StockMap : ClassMapping<Stock>
{
public StockMap()
{
Table("stock");
Schema("projefinalodevi");
Lazy(true);
Id(x => x.StockId, map => { map.Column("stock_id"); map.Generator(Generators.Identity); });
Property(x => x.Description, map => map.NotNullable(true));
Property(x => x.Unitprice, map => map.NotNullable(true));
Property(x => x.Belongstouser, map => map.NotNullable(true));
Property(x => x.Quantityinstock, map => { map.Column("quantityInStock"); map.NotNullable(true); });
}
}
最后,我的迁移:
public override void Down()
{
Execute.Sql("DELETE FROM projeFinalOdevi.roles where name = 'user'");
Execute.Sql("DELETE FROM projeFinalOdevi.roles where name = 'admin'");
Delete.Table("role_users");
Delete.Table("roles");
Delete.Table("sales");
Delete.Table("stock");
Delete.Table("users");
}
public override void Up()
{
Create.Table("users")
.WithColumn("id").AsInt32().Identity().PrimaryKey()
.WithColumn("userName").AsString(50).NotNullable()
.WithColumn("eMail").AsString(50).NotNullable()
.WithColumn("balance").AsInt32().NotNullable()
.WithColumn("adSoyad").AsString(128).NotNullable()
.WithColumn("addressMah").AsString(40).NotNullable()
.WithColumn("addressCadSk").AsString(128).NotNullable()
.WithColumn("addressil").AsString(128).NotNullable()
.WithColumn("addressilce").AsString(128).NotNullable()
.WithColumn("password_hash").AsString(256).NotNullable();
Create.Table("stock")
.WithColumn("stock_id").AsInt32().Identity().PrimaryKey()
.WithColumn("description").AsString(256).NotNullable()
.WithColumn("unitPrice").AsInt32().NotNullable()
.WithColumn("belongsToUser").AsInt32().NotNullable()
.WithColumn("quantityInStock").AsInt32().NotNullable();
Create.Table("sales")
.WithColumn("sales_id").AsInt32().Identity().PrimaryKey()
.WithColumn("stock_id").AsInt32().ForeignKey("stock", "stock_id").OnDelete(System.Data.Rule.Cascade).NotNullable()
.WithColumn("date").AsDate().NotNullable()
.WithColumn("quantity").AsInt32().NotNullable()
.WithColumn("sale_sum").AsInt32().NotNullable();
Create.Table("roles")
.WithColumn("id").AsInt32().Identity().PrimaryKey()
.WithColumn("name").AsString(128);
Create.Table("role_users")
.WithColumn("userid").AsInt32().ForeignKey("users", "id").OnDelete(System.Data.Rule.Cascade)
.WithColumn("roleid").AsInt32().ForeignKey("roles", "id").OnDelete(System.Data.Rule.Cascade);
Execute.Sql("INSERT INTO projeFinalOdevi.roles (name) VALUES ('admin')");
Execute.Sql("INSERT INTO projeFinalOdevi.roles (name) VALUES ('user')");
/* CMD line;
migrate -a D:\ProjeFinalOdevi\ProjeFinalOdevi\bin\ProjeFinalOdevi.dll -db MySql -conn "Data Source=127.0.0.1;Database=projefinalodevi;uid=root;pwd=MySQLPassis8420;"
*//* CMD line;
migrate -a C:\Users\Atabay\source\repos\ProjeFinalOdevi\ProjeFinalOdevi\bin\ProjeFinalOdevi.dll -db MySql -conn "Data Source=127.0.0.1;Database=ProjeFinalOdevinew;uid=root;pwd=root;"
*/
}
感谢帮助,谢谢 :)。
原来我不是 registering
stock
。