小编Wal*_*ter的帖子

jQuery 1.9.1属性选择器

背景

从jQuery 1.9开始,该.attr(..)方法不再返回属性值,而是我们现在必须使用.prop(..).不幸的是,这也适用于通过属性选择器指定的属性$("input[value=]")

http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-

和之间的差异的好,所以讨论.attr.prop:

.prop()vs .attr()

我的情况

我目前正在使用选择器,$("input[value=]")以及$("select[value=]") 选择没有值集的输入元素.但是,这不再适用于jQuery 1.9,而是我现在正在做这样的事情:

var hasValue = function () { return !!($(this).val().length); };
var hasNoValue = function () { return !($(this).val().length); };
$("input").filter(hasValue);
$("select").filter(hasValue);
Run Code Online (Sandbox Code Playgroud)

我的实际选择器有点大,检查有或没有值的多个元素,所以现在我不得不将我的1选择器字符串拆分成多个选择器,中间使用.filter(..)方法调用.

是否有一个相当于$("[value=]"),$("[value!=]"),$("[value='abc']")它使用属性,而不是属性的?如果没有,有没有比使用.filter(hasValue).filter(hasNoValue)方法更清洁的方法?

谢谢

html javascript jquery jquery-1.9

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

使用EF Code First DataContext进行单元测试

这比实际问题更能解决/解决问题.我在这里发帖,因为我在堆栈溢出时找不到这个解决方案,或者确实经过很多谷歌搜索.

问题:

我首先使用EF 4代码创建一个MVC 3 webapp,我想编写单元测试.我也在使用NCrunch来代码运行单元测试,所以我想避免在这里支持实际的数据库.

其他方案:

IDataContext

我发现这是创建内存datacontext最常用的方法.它实际上涉及为MyDataContext编写接口IMyDataContext,然后在所有控制器中使用该接口.这样做的一个例子是在这里.

这是我最初使用的路线,我甚至编写了一个T4模板,从MyDataContext中提取IMyDataContext,因为我不喜欢维护重复的相关代码.

但是我很快发现在使用IMyDataContext而不是MyDataContext时,一些Linq语句在生产中失败了.特别是像这样的查询会抛出NotSupportedException

var siteList = from iSite in MyDataContext.Sites
               let iMaxPageImpression = (from iPage in MyDataContext.Pages where iSite.SiteId == iPage.SiteId select iPage.AvgMonthlyImpressions).Max()
               select new { Site = iSite, MaxImpressions = iMaxPageImpression };
Run Code Online (Sandbox Code Playgroud)

我的解决方案

这其实很简单.我只是创建一个MyInMemoryDataContext子类到MyDataContext并覆盖所有IDbSet <..>属性,如下所示:

public class InMemoryDataContext : MyDataContext, IObjectContextAdapter
{
    /// <summary>Whether SaveChanges() was called on the DataContext</summary>
    public bool SaveChangesWasCalled { get; private set; }

    public InMemoryDataContext()
    {
        InitializeDataContextProperties();
        SaveChangesWasCalled = false;
    }

    /// <summary>
    /// …
Run Code Online (Sandbox Code Playgroud)

unit-testing entity-framework in-memory-database

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

EF 4.1 Code First ModelBuilder HasForeignKey用于一对一关系

很简单,我首先使用Entity Framework 4.1代码,我想用modelBuilder上的流畅调用替换我的[ForeignKey(..)]属性.类似于下面的WithRequired(..)和HasForeignKey(..)的东西,它将显式外键属性(CreatedBySessionId)与关联的导航属性(CreatedBySession)绑定在一起.但我想这样做是为了一对一的关系,而不是一对一:

modelBuilder.Entity<..>().HasMany(..).WithRequired(x => x.CreatedBySession).HasForeignKey(x => x.CreatedBySessionId)
Run Code Online (Sandbox Code Playgroud)

下面是一个更具体的例子.这与[ForeignKey(..)]属性非常愉快,但我想废除它并纯粹在modelbuilder上配置它.

public class VendorApplication
{
    public int VendorApplicationId { get; set; }

    public int CreatedBySessionId { get; set; }
    public virtual Session CreatedBySession { get; set; }
}

public class Session
{
    public int SessionId { get; set; }

    [ForeignKey("CurrentApplication")]
    public int? CurrentApplicationId { get; set; }
    public virtual VendorApplication CurrentApplication { get; set; }

    public virtual ICollection<VendorApplication> Applications { get; set; }
}

public class MyDataContext: DbContext
{
    public IDbSet<VendorApplication> Applications …
Run Code Online (Sandbox Code Playgroud)

entity-framework one-to-one code-first ef-code-first entity-framework-4.1

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