当我在使用文本字段的表上工作时,我遇到了错误.
如果我得到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
每个人都知道这一点
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)
如果这将是一个网络应用程序...这种编程是否可以......或者那种编程会导致一些麻烦?...或者这是非常好的代码:)
是否可以在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,但是我必须先加载它们,因为我的属性不在数据库中.
有什么建议?非常感谢!
我正在开发一个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) 我想在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) 我有两节课:
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
我正在使用 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) 我正在编写一个用于搜索的 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(),但同样的问题。我试图关注这篇文章,但不知道如何去做。
还有其他办法吗?或者我在某个地方出错了?
我正在尝试创建一个测试以测试实体框架Add方法。任何人都可以帮助模拟该DbSet.Add方法。我已经尝试了如下但不能正常工作。我究竟做错了什么?
我得到的结果是null在repository.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) 我有这段代码,但它不起作用,我不知道问题在哪里.
没有例外.
我正在使用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) 我们有使用Entity Framework的.NET 4.0应用程序.应用程序通过TCP远程连接到SQL Server.在局域网上,它很快,但在互联网上流量非常高.
我们想做的就是打开一些,TCP compression但看起来SQL Server 2008不提供此功能.
压缩TCP通信的最简单的解决方案是什么?
c# ×6
.net ×2
asp.net ×2
c#-4.0 ×2
asp.net-mvc ×1
dbcontext ×1
entity ×1
lambda ×1
linq ×1
many-to-many ×1
moq ×1
pagedlist ×1
sql ×1
sql-server ×1
sqlparameter ×1
unit-testing ×1