小编b0r*_*0rg的帖子

从内部属性到目标类的自动映射映射

不能'似乎想出这个.

public class DestinationClass
{
    public int InnerPropertyId { get; set; }
    public string StrignValue { get; set; }
}

public class SourceClass
{
    public InnerValue Inner { get; set; }
}

public class InnerValue
{
    public int InnerPropertyId { get; set; }
    public string StrignValue {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我需要从SourceClass.InnerValue直接映射到DestinationClass.我怎么做?

提前致谢.

c# automapper

7
推荐指数
4
解决办法
4300
查看次数

追逐"ORA-01084:OCI通话中的无效参数"

我在这里有.net 4.0 c#,IBatisNet和CSLA框架的企业项目.

ORA-01084: invalid argument in OCI call当在包中调用insert proc时,其中一个项目作业失败了.返回的错误消息最多是神秘的,存储过程有83个输入参数,不受名称约束(感谢IBatis).

什么是好奇:我有一套记录可以说OrderOrderItems.Order有28个订单商品.作业必须通过创建另一个Order并复制所有OrderItems记录来更新订单.新订单商品按ParentOrderItemId字段引用旧订单商品,这也是Orders将要续订的选择条件.

当我运行它第一次处理吹上OrderItemId: 12345ORA-01084错误.但是当我下次重新运行时,它会成功处理OrderItemId: 12345.然后爆炸了OrderItemId: 12444.然后我重新运行并OrderItemId: 12444正确处理等等.

我已经传递了DbParameters的日志,它们在两种情况下都是相同的.

我有oci客户端跟踪,但它也没用.

我已经设置了数据库层的登录,到目前为止它没有给我什么.

任何想法如何追踪这些类型的错误?

.net c# oracle

5
推荐指数
2
解决办法
5291
查看次数

在Entity Framework 4.1 Code First中附加缓存的断开连接的实体

我们有以下内容:使用UserId和User表订购.

假设我们要将所有User对象缓存为断开连接的实体,然后在ASP.NET或Web服务(如环境)中使用它们.

因为environmnet正在使用UnitOfWork和IOC框架,所以我们希望避免任何上下文操作.像下面的单元测试一样:

  1. 获取断开连接的用户对
  2. 创建上下文
  3. 创建订单对象
  4. 通过用户对象或id附加用户
  5. 保留整个Order对象.

经过两天激烈的谷歌搜索,我找不到任何解决方案.

问题是:

1.用户对象

如果我们附加用户对象(使用userId = 1),则使用默认行为,EF认为它是新的用户对象,并且正在尝试将新用户对象持久保存到db中.这是因为db已经有userId == 1.

可能的解决方案是覆盖DbContext.SaveChanges,尝试确定User是否"已分离"并强制将其附加到上下文.我无法弄清楚如何做到这一点,因为扩展方法EFExtensionMethods.IsAttached或EFExtensionMethods.AttachItem时从调用SaveChanges称为认为T是一个对象.

2. USER_ID

除非您想要在持久化和重新加载整个实体之前访问Order.User对象,否则这样做.

最重要的是,我们需要拆分API,以便仅使用对象的id(即Order.UserId)而不是实际对象(Order.User).我们重新加载对象后,我们可以使用它们.但我看不出通过API实际执行它的方法.

3.两个用户对象和USER_ID

在这种情况下,即使用户被标记为使用UserId作为外键,EF仍在尝试将User对象保存到上下文中,以解决1中描述的问题.

看起来我错过了一些(或很多)基础知识,问题是:

  • 你会建议做什么?
  • 有没有很好的通用方法使得EFExtensionMethods.IsAttached能够从DbContext.SaveChanges开始工作
  • 有没有好的和通用的方法使EFExtensionMethods.AttachItem从DbContext.SaveChanges工作

任何帮助是极大的赞赏.

[TestMethod]
public void Creating_Order_With_Both_User_And_Id()
{
    int userCount = CountAll<User>();
    User user;
    using (var db = GetContext()) { user = db.Users.AsNoTracking().First(); }
    using (var db = GetContext())
    {
        var o = CreateOrder();
        o.OrderUser = user;         // attach user entity
        o.UserId = user.UserID;     // attach by id
        db.Orders.Add(o);
        db.SaveChanges();
    }
    int newUserCount = CountAll<User>(); …
Run Code Online (Sandbox Code Playgroud)

.net ef-code-first entity-framework-4.1

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