Tag: entity framework ctp5

generics和entity framework:如何根据列值返回不同的类型

我们有一个人员表,存储不同类型的人(买方,卖方,代理等)。 我们的ORM是entity frameworkCodeFirst(CTP5)。 我们正在使用存储库模式进行良好的TDD和模拟。 在PersonRepository中我想返回一个特定的类型,所以我可以做这样的事情: Agent a = repository.Get(5005); // Where 5005 is just an example Id for the person a.SomeAgentProperty = someValue; Buyer b = repository.Get(253); // Again, a simple PersonId. b.SomeBuyerProperty = someOtherValue; 我的想法是,当我从存储库中获取它时,我知道我会得到什么样的人。 而且,是的,我可以创建X个不同的Get方法,称为GetBuyer(int PersonId),GetSeller(int PersonId)等等。 但那有代码味道。 generics函数看起来如何? 到目前为止,这是我的存储库界面: public interface IPersonRepository { Person Get(int PersonId); // To get a generic person […]

是什么原因INSERT语句与FOREIGN KEY约束冲突?

这段代码以前对我有用,但我不确定是什么导致了这个错误。 我唯一的猜测是,当我尝试创建一个播放器时,团队数据被发送回Team表并尝试复制,但由于TeamId是唯一的,因此这个错误。 错误 INSERT语句与FOREIGN KEY约束“FK_dbo.Players_dbo.Teams_TeamId”冲突。 冲突发生在数据库“Web”,表“dbo.Teams”,列’TeamId’中。 该语句已终止。 播放机 public class Player { … … [HiddenInput(DisplayValue = false)] [ForeignKey(“Team”)] public int TeamId { get; set; } public virtual Team Team { get; set; } … } 球队 public class Team { [Key] [HiddenInput(DisplayValue = false)] public int TeamId { get; set; } …. public virtual ICollection […]

基于抽象实体的急切加载嵌套导航问题(EF CTP5)

我的EF模型的一部分看起来像这样: 摘要: 位置有很多post Post是一个抽象类 讨论来自Post 讨论有很多评论 现在,我正试图实现的查询: 获取有关位置ID 1234的信息,包括与这些讨论相关的任何讨论和评论。 我可以得到讨论和这样的评论: var discussions = ctx.Posts .OfType() .Include(x => x.Comments) .ToList(); 但我似乎无法根据位置实体上的post导航获取它。 我试过这个: var locationWithDiscussionsAndComments = ctx .Locations .Include(x => x.Posts .OfType() .Select(y => y.Comments)) .SingleOrDefault(); 哪个编译,但我得到错误: System.ArgumentException:包含路径表达式必须引用实体定义的属性,也可以引用嵌套属性或对Select的调用。 参数名称:路径 有任何想法吗? 我可能会从post中“倒退”: var locationWithDiscussionsAndComments = ctx .Posts .Include(x => x.Location) .OfType() .Include(x => x.Comments) .Where(x => x.LocationId == […]

带有MVC3和EF4 CTP5w的JSON序列化的循环引用exception

当我尝试序列化通过EF4 CTP5返回的对象时,我遇到循环引用问题。 我使用代码第一种方法和简单的poco为我的模型。 我已经将[ScriptIgnore]属性添加到任何提供对象的反向引用的属性中,并且令人烦恼的是,如果我手动实例化poco的话,每个似乎工作正常,即它们串行化为JSON,并且确认了scriptignore属性。 但是,当我尝试序列化从DAL返回的对象时,我得到循环引用exception“序列化’System.Data.Entity.DynamicProxies.xxxx’类型的对象时检测到循环引用” 我已经尝试了几种方法来检索数据,但是他们都遇到了这个错误: public JsonResult GetTimeSlot(int id) { TimeSlotDao tsDao = new TimeSlotDao(); TimeSlot ts = tsDao.GetById(id); return Json(ts); } 下面的方法效果稍好,而不是时间段动态代理对象导致循环引用其为约会对象。 public JsonResult GetTimeSlot(int id) { TimeSlotDao tsDao = new TimeSlotDao(); var ts = from t in tsDao.GetQueryable() where t.Id == id select new {t.Id, t.StartTime, t.Available, t.Appointment}; return Json(ts); } 这个问题的任何想法或解决方案? […]

entity framework代码优先:如何在两个表之间创建一对多和一对一的关系?

这是我的模型: public class Customer { public int ID { get; set; } public int MailingAddressID { get; set; } public virtual Address MailingAddress { get; set; } public virtual ICollection Addresses { get; set; } } public class Address { public int ID { get; set; } public int CustomerID { get; set; } public […]