我正在尝试获取List<User>
,而List<Article>
又包含User
List<User>
,但是在查询时,我会获得User
和User
List<Article>
(唯一的 public class User
{
public virtual int UserId { get; set; }
public virtual string Name { get; set; }
public virtual string Password { get; set; }
public virtual IList<Article> Articles { get; set; }
public User()
{
Articles = new List<Article>();
}
}
public class Article
{
public virtual int ArticleId { get; set; }
public virtual string Title { get; set; }
public virtual string Ingress { get; set; }
public virtual DateTime Created { get; set; }
public virtual string ArticleText { get; set; }
public virtual User Author { get; set; }
}
)有一个 public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.UserId);
Map(x => x.Name);
Map(x => x.Password);
HasMany(x => x.Articles).KeyColumn("UserId").LazyLoad();
}
}
public class ArticleMap : ClassMap<Article>
{
public ArticleMap()
{
Id(x => x.ArticleId);
Map(x => x.Title);
Map(x => x.Ingress);
Map(x => x.Created);
References(x => x.Author).Column("UserId").LazyLoad();
Map(x => x.ArticleText).Length(4001);
}
}
,但它不包含任何内容。
我已经检查了我的数据库并且密钥匹配,所以我的猜测(好吧,不是很多猜测)是我的映射中存在一些问题。我搜索了一对多(HasMany)的例子并尝试了它们但没有任何工作。谁知道什么可能是错的?
类
List<User> usr = new List<User>();
using (var session = SessionFactoryHelper.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
User u = new User
{
Name = "Mohindra",
Password = "Corn"
};
Article a = new Article
{
Title = "Doh!",
Ingress = "yada yada",
ArticleText = "why dammit! whyyy?!11!!",
Created = DateTime.Now,
Author = u
};
session.Save(u);
session.Save(a);
usr = session.Query<User>().ToList();
transaction.Begin();
transaction.Commit();
}
}
这些是我的映射
{{1}}
这是我对插入/选择
的呼吁{{1}}
这可能是最简单的新手错误,但我对使用O / RM非常陌生,所以我不知道这里可能出现什么问题。
答案 0 :(得分:2)
用于,
HasMany(x => x.Articles).Table("Article").KeyColumn("UserId").LazyLoad();
然后我独立保存了我的对象。
当我应该使用时,
HasMany(x => x.Articles).Table("Article").KeyColumn("UserId").Cascade.All();
^在这种情况下,Article
继承了我的User
,然后我可以用关系保存它们。