标签: entity-framework-4

实体框架 - 获取文本列中的数据长度

当我在使用文本字段的表上工作时,我遇到了错误.

如果我得到varchar列的长度,我可以做

var result = (from t in context.tablename select t.fullname.Length)

但是,如果我在文本字段上运行相同的查询:

var result = (from t in context.tablename select t.biography.Length)

我收到错误:

Argument data type text is invalid for argument 1 of len function.

我已经完成了一些关于这个主题的阅读,我理解为什么SQL Server会引发这个错误,但我不确定它的最佳方法.我知道我可以返回结果,然后得到结果字符串的长度,但肯定有一种更简单的方法吗?

sql-server entity-framework sql-server-2008 entity-framework-4

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

实体框架传递对静态类的引用

每个人都知道这一点

using (var db = new DatabaseEntites())
{
    var row = db.SomeTable.SingleOrDefault(r => r.Id == 5)
}
Run Code Online (Sandbox Code Playgroud)

我打算用这样的静态方法创建一个静态类

public static class SomeTableRepository
{
   public static class GetSomeTableRow(DatabaseEntities db, int id)
   {
        return db.SomeTable.SingleOrDefault(r => r.Id == 5);
   }
}
Run Code Online (Sandbox Code Playgroud)

然后第一个代码看起来像这样

using (var db = new DatabaseEntites())
{
    var row = SomeTableRepository.GetSomeTableRow(db, id);
}
Run Code Online (Sandbox Code Playgroud)

如果这将是一个网络应用程序...这种编程是否可以......或者那种编程会导致一些麻烦?...或者这是非常好的代码:)

c# entity-framework-4

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

.Contains()在EF Code First的2个属性上

是否可以在Where()中对两个不同的属性进行查询?例如,我想获取所有在FirstName和LastName属性中包含"Robert G"的用户.如果我做 :

var contacts = _session.All<Contact>()
    .Where(x => x.IsActive
                && (x.FirstName.ToLower().Contains(q.ToLower())
                    || x.LastName.ToLower().Contains(q.ToLower())));
Run Code Online (Sandbox Code Playgroud)

我将不会得到"Robert G"的结果,因为FirstName包含"Robert"和LastName"Gambonni".

我还考虑过制作一个新属性FullName,它只是一个Getter,但是我必须先加载它们,因为我的属性不在数据库中.

有什么建议?非常感谢!

c# linq entity-framework-4 ef-code-first

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

如何覆盖分部类中的属性?

我正在开发一个MVC应用程序,我在开发它时使用了EF 4.0.我已经从模型中创建了类.现在,我想为MVC创建的每个类添加更多类.

恩.在下面的代码中,我得到了类Location.现在,我想再创建一个类(Partial class)如何覆盖分部类中的属性?

怎么做 ?

namespace Entities
{
   public partial class Location
   {               
       public int Id { get; set; }

       public string Name { get; set; }
       public string Remark { get; set; }      
       public string State { get; set; }       
       public string Region { get; set; }
       public string PinCode { get; set; }

       public virtual ICollection<Comment> Comments { get; set; }
   }    
}
Run Code Online (Sandbox Code Playgroud)

model-view-controller asp.net-mvc entity entity-framework-4

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

在Entity Framework中使用存储的查询

我想在Entity Framework中使用SQL查询.

这是我的代码:

 string sql = (@"SELECT G.GainId,
                (SELECT Name FROM Carrier WHERE CarrierId = G.CarrierId) AS Carrier,
                (SELECT Name + ' ' + Surname FROM [User] WHERE UserId = G.GainerId) AS Gainer,
                (SELECT Name + ' ' + Surname FROM [User] WHERE UserId = G.GiverId) AS Giver,
                (SELECT Name + ' ' + Surname FROM [User] WHERE UserId = G.CustomerId) AS Customer,
                    P.Name,
                    G.Gained,
                    G.Paid
                    FROM Gain AS G 
                    INNER JOIN Product AS P ON P.ProductId = G.ProductId");

            DataTable …
Run Code Online (Sandbox Code Playgroud)

asp.net entity-framework-4 c#-4.0

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

删除多对多关系

我有两节课:

public class User
{
    public int Id {get;set;}
    public string Username {get;set;}

    [InverseProperty("Users")]
    public virtual ICollection<Tag> Tags {get;set;}
}

public class Tag
{
    public int Id {get;set;}
    public string Title {get;set;}

    [InverseProperty("Tags")]
    public virtual ICollection<User> Users {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

这显然导致第3个表类似于称为UserTags的多对多关系,它只有两列,UserId和TagId.

现在假设我有100.000个用户和100.000个标签,平均每个Eser与1.000个标签有关系.我想从特定的User.Tags集合中删除单个标记,而不必在此之前加载所有标记.

最快的方法是什么?

many-to-many entity-framework entity-framework-4 entity-framework-5

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

SqlParameter 已包含在另一个 SqlParameterCollection 中

我正在使用 EF DbContext SqlQuery 来使用 PagedList ( https://github.com/TroyGoode/PagedList )获取分页对象列表,但出现以下错误:

“SqlParameter 已包含在另一个 SqlParameterCollection 中”

这是我的存储库代码:

var db = (DbContext)DataContext;
        const string sqlString =
            @"            
            WITH UserFollowerList
            AS 
            ( 
            SELECT uf.FollowId
            FROM UserFollow uf 
            WHERE uf.UserId = @UserId
            )
            SELECT * FROM UserFollowerList uf
            INNER JOIN [User] u ON uf.FollowId = u.UserId
            WHERE IsDeleted = 0
            "
            ;

        var userIdParam = new SqlParameter("UserId", SqlDbType.Int) {Value = userId};

        var userList =
            db.Database.SqlQuery<User>(sqlString, userIdParam)
            .ToPagedList(pageIndex, pageSize);

        return userList;
Run Code Online (Sandbox Code Playgroud)

但是当我在 SqlQuery 语句上调用 ToList 扩展时,它工作正常:

var …
Run Code Online (Sandbox Code Playgroud)

pagedlist entity-framework-4 sqlparameter dbcontext

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

如何在实体框架lambda表达式中使用Like运算符

我正在编写一个用于搜索的 SQL 查询,用户根据名字和姓氏进行搜索。当搜索名字或姓氏时,查询工作正常,但是当我搜索名字和姓氏(即名字和姓氏之间的空格)时,它给出空白结果。查询字符串如下所示:
http://localhost:4562/api/User/Search?q=sumedha%20v&filters=&offset=3&limit=9

sql查询是:List<AppUser> searchedAppUsers = await _context.AppUser.Where(u => u.Profile.FirstName.StartsWith(q) || u.Profile.LastName.StartsWith(q)).ToListAsync();

我尝试使用Contains()代替,StartsWith()但它仍然给出空白结果。我也尝试过使用SqlMethods.Like(),但在智能感知中看不到它。我尝试使用SqlFunctions.PatIndex(),但同样的问题。我试图关注这篇文章,但不知道如何去做。
还有其他办法吗?或者我在某个地方出错了?

c# sql lambda entity-framework-4

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

C#如何Moq实体框架DbSet添加方法

我正在尝试创建一个测试以测试实体框架Add方法。任何人都可以帮助模拟该DbSet.Add方法。我已经尝试了如下但不能正常工作。我究竟做错了什么?

我得到的结果是nullrepository.Insert... 之后

Test.cs:

var productToCreate = new Product { Name = "Added", Description = "Added" };        

var result = repository.InsertAsync(objToCreate, userContext).Result;
Assert.AreEqual(result.Name, "Added");  
Run Code Online (Sandbox Code Playgroud)

Mock.cs

internal static DbSet<T> GetMockedDataSet<T>(IEnumerable<T> data) where T : class
{
    // Create a mocked data set that contains the data
    var set = new Mock<DbSet<T>>();
    set.As<IDbAsyncEnumerable<T>>()
        .Setup(m => m.GetAsyncEnumerator())
        .Returns(new TestDbAsyncEnumerator<T>(data.GetEnumerator()));
    set.As<IQueryable<T>>()
        .Setup(m => m.Provider)
        .Returns(new TestDbAsyncQueryProvider<T>(data.AsQueryable().Provider));
    set.As<IQueryable<T>>().Setup(m => m.Expression).Returns(data.AsQueryable().Expression);
    set.As<IQueryable<T>>().Setup(m => m.ElementType).Returns(data.AsQueryable().ElementType);
    set.As<IQueryable<T>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

    set.Setup(x …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq entity-framework-4 c#-4.0

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

实体框架SaveChanges不起作用

我有这段代码,但它不起作用,我不知道问题在哪里.

没有例外.

我正在使用Entity Framework 4.这个SaveChanges调用似乎没有在数据库中做任何事情.

try
{
    Demande_Rage_Animale editdemande = DemandeRageAnimaleDAO.First(s => s.ID == demandebean.ID);

    //frombeanTodemande(demandebean, editdemande);
    editdemande.num_rapport = "111111";

    //editdemande.EntityState.
    DemandeRageAnimaleDAO.SaveChanges();
}
catch (Exception ex)
{
    Logger.Error("==> Modifier_demande_RageAnimale : " + ex.InnerException);
}
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net entity-framework entity-framework-4

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

压缩SQL Server 2008中的TCP

我们有使用Entity Framework的.NET 4.0应用程序.应用程序通过TCP远程连接到SQL Server.在局域网上,它很快,但在互联网上流量非常高.

我们想做的就是打开一些,TCP compression但看起来SQL Server 2008不提供此功能.

压缩TCP通信的最简单的解决方案是什么?

.net c# sql-server-2008 entity-framework-4

-7
推荐指数
1
解决办法
981
查看次数