小编Lad*_*nka的帖子

如何在WCF中为HTTP连接设置保持活动间隔

WCF中的Http传输通道默认使用持久HTTP连接.如何控制这些连接的活动超时?默认值为100秒.我通过监控Procmon中的应用程序找到了这个值.我没有在http传输绑定元素中找到配置此超时的任何设置.有没有可以控制超时的.NET类?

.net wcf

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

EF 4.1 SaveChanges不更新导航或引用属性

我首先使用代码,可以毫无问题地添加记录.正确创建数据库并且没有任何问题地播种.但是在我的编辑操作中调用SaveChanges()只会更新实体,而不会更新任何导航或引用属性.

我的模型的简化版本:

public class Contact : IMyBaseObject
{
    public Contact()
    {
       this.Delete = false;
       this.ContactTypes = new HashSet<ContactType>();
    }

    public int Id {get; set;}

    public string Name {get;set;}

    public bool Delete {get;set;}

    public virtual ICollection<ContactType> ContactTypes { get; set; }

    public virtual USState USState { get; set; }

}

public class ContactType : MyBaseObject
{
    public ContactType()
    {
    }

    public int Id {get; set;}

    public string Name {get;set;}

    public virtual ICollection<Contact> Contacts {get;set;}
}

public abstract class Territory : MyBaseObject …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-4.1

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

在Entity Framework Code First中更新记录的单个属性

如何在不先检索记录的情况下更新记录的单个属性?我在EF Code First 4.1的背景下提出要求

说我有一个类User,映射到数据库中的表Users:

class User
{
    public int Id {get;set;}
    [Required]
    public string Name {get;set;}
    public DateTime LastActivity {get;set;}
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在我想更新用户的LastActivity.我有用户名.我可以通过查询用户记录,将新值设置为LastActivity,然后调用SaveChanges()来轻松完成.但这会导致冗余查询.

我通过使用Attach方法来解决.但是因为EF在Name上抛出了验证异常,如果它为null,我将Name设置为随机字符串(不会更新回DB).但这似乎不是一个优雅的解决方案:

using (var entities = new MyEntities())
{
    User u = new User {Id = id, Name="this wont be updated" };
    entities.Users.Attach(u);
    u.LastActivity = DateTime.Now;
    entities.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

如果有人能为我提供更好的解决方案,我会非常高兴.请原谅我有任何错误,因为这是我第一次就SO提问.

validation entity-framework entity-framework-4.1

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

如何从SQL Server获取数据到SqlDataReader?

当我调用此代码时:

using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand("SELECT * FROM Table", connection);
    connection.Open();
    using (var reader = command.ExecuteReader())
    {
        while(reader.Read())
        {
            // Do something here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

内部会发生什么?这在网络层面如何运作?是否会为每次调用进行新的数据库往返,Read或者内部是否有批量读取?

我这么问是因为我刚才读的ODP.NET提供FetchSize两个属性OracleCommandOracleDataReader我的理解是多少记录应通过单次往返于数据库中预装的定义.我想知道SQL Server是否以类似的方式工作,并且是否存在可以在某处配置的类似行为.我没有找到任何这样的配置SqlCommand,SqlDataReaderCommandBehavior.

.net sql-server oracle ado.net odp.net

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

在Entity Framework 4.0中批处理DB命令

我目前的项目需要与外部系统进行日常同步.同步基于复杂的导入文件结构,该结构使用广泛的业务逻辑进行解析和处理.由于业务逻辑,我们决定在.NET代码中实现这一点,并重用现有的BL组件,而不是在存储过程或集成服务中编写相同的逻辑.

BL层位于EF 4.0数据访问层的顶部.当前实现过程导入批处理,将所有更改填入ObjectContext并在事务中执行SaveChanges.当我检查SQL分析器时,我看到EF将每个实体更改作为单个SQL命令执行(具有自己的往返DB的往返).此外,看起来这些命令是完全顺序执行的.所以我有多达100.000往返数据库进行初始导入,以及10.000 - 50.000往返数据库进行日常同步.

是否可以通过EF本身或某些提供商/扩展程序以某种方式批量插入/更新/删除命令?

.net entity-framework batch-processing entity-framework-4

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

EF 4.1 Code First和现有数据库和.NET成员

我在我的开发框上有一个名为ApplicationName_Development的数据库在SQL Server 2008 R2 Developer Edition上运行.

我没有问题地将.NET成员资格表添加到数据库中.当我试图让Code First工作时,我收到以下错误消息:

服务器遇到处理请求的错误.异常消息是"无法检查模型兼容性,因为数据库不包含模型元数据.请确保已将IncludeMetadataConvention添加到DbModelBuilder约定中.

经过一些谷歌搜索,我发现我必须删除数据库,让EF创建数据库.这没关系,但我丢失了所有的.NET会员表.我可以返回并再次添加成员资格表,但如果我的模型更改并且EF需要重新创建数据库,那么我必须再次添加成员资格表.

我该如何解决这个问题?

ef-code-first entity-framework-4.1

15
推荐指数
3
解决办法
3万
查看次数

使用Entity Framework 4时如何返回datareader?

我想使用LINQ和我的EntityFramework上下文定义数据库查询,但我不希望返回实体; 我想要一个datareader!

我怎样才能做到这一点?这用于将行导出为CSV.

干杯,伊恩.

ado.net entity-framework entity-framework-4.1

15
推荐指数
2
解决办法
2万
查看次数

Moq测试LINQ哪里有查询

我正在使用EF 4.1来构建域模型.我有一个带有Validate(字符串userCode)方法的Task类,在其中我想确保用户代码映射到数据库中的有效用户,因此:

public static bool Validate(string userCode)
{
    IDbSet<User> users = db.Set<User>();
    var results = from u in users
              where u.UserCode.Equals(userCode)
              select u;
    return results.FirstOrDefault() != null;
}
Run Code Online (Sandbox Code Playgroud)

我可以使用Moq来模拟IDbSet没问题.但是在Where调用时遇到了麻烦:

User user = new User { UserCode = "abc" };
IList<User> list = new List<User> { user };
var users = new Mock<IDbSet<User>>();
users.Setup(x => x.Where(It.IsAny<Expression<Func<User, bool>>>())).Returns(list.AsQueryable);

Initialization method JLTi.iRIS3.Tests.TaskTest.SetUp threw exception.
System.NotSupportedException: System.NotSupportedException: Expression 
references a method that does not belong to the mocked object:
x => x.Where<User>(It.IsAny<Expression`1>()).
Run Code Online (Sandbox Code Playgroud)

除了创建一个间接级别(例如,使用ServiceLocator来获取运行LINQ的对象然后模拟该方法)之外,我想不出怎么测试这个,但我想确保以前没办法我介绍另一层.而且我可以看到经常需要这种LINQ查询,因此服务对象很快就会失控.

某种灵魂有帮助吗?谢谢!

linq tdd unit-testing moq entity-framework-4.1

15
推荐指数
3
解决办法
2万
查看次数

首先在EF代码中插入/更新逻辑

我想为插入和更新某些EF对象的事件添加一些逻辑.我有一个带有category对象的MVC应用程序,它有一个属性,它是name属性的一个slugified版本.

public class Category
{

    public string Name { get; set; }
    public string UrlName{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想仅在插入和更新事件上设置UrlName属性,因为我的slugify逻辑非常精细.

我知道我可以在上下文本身的SaveChanges()函数中添加一些逻辑,但我更愿意将代码放在实体本身附近.

有没有办法首先使用EF代码完成这样的事情?

events entity-framework entity-framework-4.1

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

如何在EF 5.0中禁用自动表创建?

我在我的项目中为Framework 4.0安装了Entity Framework 5.0 RC.但是当我尝试从Views中获取数据时,我得到了错误.EF尝试为此实体创建表.

entity-framework-5

15
推荐指数
2
解决办法
9032
查看次数