标签: xpo

关于DevExpress XPO ORM包的任何想法?

XPO是我公司选择的对象关系映射器.有关利弊的任何想法?


我只是在寻找关于该产品的一般感觉和轶事.我们没有转向XPO.我们正在摆脱存在于应用程序中的硬编码sql字符串,并完全移动到ORM以进行所有数据访问.

c# windows orm devexpress xpo

23
推荐指数
4
解决办法
1万
查看次数

DevExpress XPO vs NHibernate vs Entity Framework:数据库升级问题

使用ORM(DevExpress XPO,NHibernateMS Entity Framework)升级数据库的最佳实践是什么?

我正在开始一个新项目并且必须选择一个ORM.开发过程需要经常发布中间测试版本,并且每个版本可能会在数据库结构中发生更改.每个新版本都必须轻轻升级数据库以保持当前数据.

对于旧的解决方案,我将提供一组SQL脚本,用于将数据库从v1升级到v2,从v2升级到v3等,并按顺序执行它们.

但它如何为ORM工作?我还应该编写SQL脚本来升级数据库吗?

我知道简单地添加新字段不会导致问题(例如,请参阅XPO的UpdateSchema()方法),但是如果我必须拆分表并将当前记录重新分配到2个新表中呢?

nhibernate entity-framework devexpress xpo upgrade

6
推荐指数
1
解决办法
1万
查看次数

在 VS2017 中不断出现加载错误:域对象

无法加载“文件引用”:ID 为“guid”的域对象已在此或其他域模型中定义。

在此处输入图片说明

要加载的文件是 DevExpress xpo 数据模型文件,并且该文件本身至少已成功加载 3 次。

我在整个硬盘上搜索了ID guid,没有任何结果。

我怎样才能解决这个问题?

devexpress xpo visual-studio-2017

6
推荐指数
1
解决办法
59
查看次数

使用Repository模式(例如)DevExpress XPO是否有意义?

就我一直在研究存储库模式而言,"存储库"应该负责数据持久化和基本查询任务,并且仅用于此.所以在典型的存储库中我看到这样的东西:

public interface IProductRepository {
  Product GetByID(int id);
  void Add(Product item);
  void Update(Product item);
  void Delete(Product item);
}
Run Code Online (Sandbox Code Playgroud)

但我想知道如果使用像DevExpress的XPO这样的ORM工具,存储库实现主要由单行方法组成.在XPO旁边仍然创建这个抽象级别是否有意义?

可以指出模拟和单元测试功能,但是例如XPO提供了强大的内存持久性功能,这在99%的时间内非常适合单元测试.

我想我也可以提到EF或NHibernate,它们有类似的功能.

另外一个问题:if - 假设 - 我没有以这种方式实现存储库模式,我应该在哪里放置更复杂的queriyng(例如基于复杂的标准或用户角色),或者更复杂的项目保存逻辑(带有日志记录,验证等)?

谢谢你的帮助.

UPDATE

如何定义一个通用的存储库接口,该接口类型独立地解决了这样的CRUD操作:

public interface IRepository : IDisposable {
  T GetByID<T>(int id);
  IQueryable<T> Query<T>();

  T Create<T>();
  void Update<T>(T item);
  void Delete<T>(T item);
}
Run Code Online (Sandbox Code Playgroud)

然后我可以使用XPO,EF或我选择的任何ORM轻松实现它,即使使用JSON文本文件也是如此.这是一个很好的中间解决方案,还是闻到了?我能看到的唯一缺点是我将把上面提到的那些更复杂的操作放在哪里,但是我可能会在需要时继承这个特殊的接口.

c# design-patterns devexpress xpo repository-pattern

3
推荐指数
1
解决办法
974
查看次数

动态LINQ."ClassName"类型中不存在属性或字段"FieldName"

我的LINQ查询如下

Dim Query = From t In New XPQuery(Of xUser)(Xpo.Session.DefaultSession)
.Where("Name=John").Select("new (Name as FirstName)")
Run Code Online (Sandbox Code Playgroud)

不幸的是我得到了错误 No property or field 'John' exists in type 'xUser'

当然我的xUser类中不存在这样的属性,但是我能解决这个问题吗?

在DynamicLinq类中读取后,我发现了这个功能

Function FindPropertyOrField(ByVal type As Type, ByVal memberName As String, ByVal staticAccess As Boolean) As MemberInfo
    Dim flags As BindingFlags = BindingFlags.Public Or BindingFlags.DeclaredOnly Or _
        If(staticAccess, BindingFlags.Static, BindingFlags.Instance)
    For Each t As Type In SelfAndBaseTypes(Type)
        Dim members As MemberInfo() = t.FindMembers(MemberTypes.Property Or MemberTypes.Field, _
            flags, type.FilterNameIgnoreCase, memberName)
        If members.Length <> 0 Then Return members(0) …
Run Code Online (Sandbox Code Playgroud)

linq vb.net xpo dynamic-linq

2
推荐指数
1
解决办法
6622
查看次数

DevExpress XPO或Telerik OpenAccess

我将开始一个中型项目并计划使用一个好的ORM产品.我将使用代码优先方法.

我尝试了Entity框架,OpenAccess和XPO.我想我们将购买XPO或OpenAccess.您对这些产品有什么建议吗?

谢谢

devexpress xpo openaccess

1
推荐指数
1
解决办法
2248
查看次数