如果我有三班A,B和C:
class A {
public B b { get; set; }
public C c { get; set; }
}
class B {
public C c { get; set; }
}
class C {
...
}
当我进行如下查询时:
Context.A.Where(...).Include(x => x.b).Include(x => x.c);
实体在A和B中加载C对象,复制数据。有什么办法可以防止吗?我不用懒装。
我们第一次在现实世界中使用Breeze,这是一个非常棒的框架。我们在继承方面遇到的问题是,当查询具有多态导航集合的实体时,我们可以在JSON中看到派生类型返回的数据,但是在客户机上的Breeze实体中没有填充该集合。我们在服务器上有C#类,其中实体框架使用每种类型表策略持久化到数据库。有一个名为Client的抽象基类,SpecialClient从它继承:
public abstract class Client
{
public int Id { get; set; }
public int QuoteID { get; set; } //For
我对DDD的总体主题缺乏了解。
我确实有一个Offer聚合,它具有其子集合OfferProducts的导航属性。当我学习实体框架时,我认为我应该始终在关系的两边定义导航属性,但是Ardalis ( ef 规范包的维护者)在某个地方写了这些我没有正确理解的词:
您希望避免具有跨集合的导航属性。因此,您需要决定导航属性应该去哪里,而非导航键属性应该去哪里。
我就是这样设计我的实体的:
public class Offer : BaseEntity, IAggregateRoot
{
...
public ICollection<OfferProduct> OfferPro
在NerdDinner示例中,它们使用存储库模式将业务与数据层解耦。但是,他们使用Linq to SQL生成的类(特别是晚餐)作为整个项目中使用的实体类。那么,这到底是如何解耦的呢?将Linq-to-SQL转换成SQL并非易事。
在我的上一个项目中,我创建了一个单独的实体类,我在linq查询中使用left/right填充它,因为我发现,即使使用生成的linq的一部分,也不能填充在查询时添加的任何附加字段。
对于依赖于不使用NuGet包的项目,或者间接需要依赖关系的项目,我有一个问题,下面是项目结构:
- Data -> Depends on Entity Framework
- Business
- UI
这里的问题是,因为Data依赖于实体框架,这意味着Business层和UI也必须安装在他们的项目中。
如何分离这些依赖关系,以便只有Data层需要实体框架?
我想有一个实体,可以有一个孩子(一或零)。此子对象与父对象的类型相同。我不确定如何设置实体框架,因为我希望每个实体都有两个导航属性。一个用于导航到子级,另一个用于导航到父级。基本上,它与双向链表的结构完全相同。
我认为这个表结构应该足够了:
int | id | PK
int | id_next | FK
text | data
但是如何为next/prev项创建导航属性呢?我只能为下一项创建导航属性。
谢谢你的帮助。
更新
我有一个通知表
public class Notification
{
public int SourceType { get; set; }
public int SourceID { get; set; }
....
// Relations
public virtual SourceA A { get; set; }
public virtual SourceB B { get; set; }
}
有两个源表
public class SourceA
{
public int Id { get; set; }
...
publi
我有这样的SQL查询
SELECT WI.[WorkItemID] ,[WorkItemNumber] ,[ToDate]
FROM [WorkItem] AS WI INNER JOIN [WorkItemTrack] AS WT on WI.WorkItemID=WT.WorkItemID
WHERE MAX([ToDate]) BETWEEN @StartDate AND @EndDate
对应的实体框架查询为
workItems = from wi in workItems.Where(p => p.IsActive)
join wt
我是在手机上快速编写这篇文章的,所以请原谅那些糟糕的代码示例。
我有很多关系的实体:
@JoinTable(name="foo", @JoinColum="...", @InverseJoinColumn="...")
@ManyToMany
List list = new ArrayList();
我希望以分页的方式检索他们的数据。
我知道setFirstResult和setMaxResults的事。有没有办法将其与映射一起使用?与在中一样,我检索对象并获取填充了内容的列表,这些内容等于单个页面的记录量,并具有适当的偏移量。
我
我已经读取了仓库不应该返回DTO而是实体。那么,我如何返回包含多个子实体的实体列表?
这是我在数据库中的实体:
public class Note
{
[Key]
public int NoteId { get; set; }
[Required]
public string Content { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
现在我在存储库中有:
public IEnumerable<Note> GetNote