小编Vah*_*ari的帖子

不必要的转换为bigint

我有员工表与bigint数据库中的主键字段和实体数据模型与数据库第一种方法.Employee类具有此结构

public partial class Employee
{
     public long Emp_No { get; set; }
     public string Name { get; set; }
     public string Family { get; set; }
     ...
}
Run Code Online (Sandbox Code Playgroud)

我用Entity Framework编写这个基本查询

List<long> ids = new List<long>() {1,2,3,4,5,6}
database.Employees.Where(q => ids.Contain(q.Emp_No)).ToList();
Run Code Online (Sandbox Code Playgroud)

它生成如下查询:

SELECT 
    [Extent1].[Emp_No] AS [Emp_No], 
    [Extent1].[Name] AS [Name], 
    [Extent1].[Family] AS [Family], 
    ...
    FROM [dbo].[Employee] AS [Extent1]
    WHERE [Extent1].[Emp_No] IN (cast(0 as bigint), 
                                 cast(1 as bigint), 
                                 cast(2 as bigint), 
                                 cast(3 as bigint), 
                                 cast(4 as bigint), 
                                 cast(5 as bigint), 
                                 cast(6 …
Run Code Online (Sandbox Code Playgroud)

c# sql-server expression entity-framework

11
推荐指数
1
解决办法
584
查看次数

与服务器成功建立连接,但随后在登录前握手/登录过程中出现错误

我开发了一个接收短信的短信服务器,分析它们并回复消息。此应用程序使用实体框架 4.0 和 SQLServer 2008 开发。

当我收到短信时,我会为该消息运行新线程并分析和响应消息。每个线程都有自己的对象上下文的新实例,所有线程在 SQL Server 中调用相同的存储过程。

但是当大量 SMS 到达服务器并且线程数量增加时,我每次都会收到以下两个错误之一:

底层提供程序在 Open 上失败。已成功与服务器建立连接,但在登录前握手期间发生错误。(提供者:TCP 提供者,错误:0 - 指定的网络名称不再可用。)

或者

底层提供程序在 Open 上失败。已成功与服务器建立连接,但随后在登录过程中出现错误。(提供者:TCP 提供者,错误:0 - 指定的网络名称不再可用。)

我将最大池大小和连接超时增加到 400 和 150。有人可以帮助我吗?谢谢

sql-server login entity-framework-4

6
推荐指数
1
解决办法
4822
查看次数

Runtime.Caching.MemoryCache 将许多项添加到缓存时抛出 OutOfMemoryException

对于一些繁重的计算,我想将临时结果放入 MemoryCache 并在需要时再次加载它。但是当我将 200 万个对象放入 Cache 时,它​​会抛出 OutOfMemoryException。

我在带有 8GB 内存的 Windows 7 64 位上运行程序。

当我查看任务管理器时,我发现我的应用程序只占用了 1.5 GB 内存,然后崩溃了。这段代码类似于我在我的程序中所做的

NameValueCollection config = new NameValueCollection
{
    {"cacheMemoryLimitMegabytes", "4000"},
    {"physicalMemoryLimitPercentage", "100"}
};
MemoryCache cache = new MemoryCache("MyCache", config);
CacheItemPolicy policy = new CacheItemPolicy { AbsoluteExpiration = ObjectCache.InfiniteAbsoluteExpiration };
for (int i = 0; i < 4000000; i++)
{
    var resultOfTempOperation = DoOperation();
    CacheItem newEmployee = new CacheItem(Guid.NewGuid().ToString(), new SomeClass());
    cache.Add(newEmployee, policy);
}
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题?

.net c# caching

6
推荐指数
1
解决办法
512
查看次数

使用导入函数时不必要地加入实体框架?

我的数据库中有一个Employee表和一个返回与我的员工表完全相同的结构的 SQL 表值函数。我正在更改函数中表的某些字段值(如 GroupNumber)。我在 EF 中导入了该函数并将返回类型设置为员工实体。
现在我运行以下查询:

IQueryable<Employee> employeeSearchResult = this.Context.EmployeeStateAtDate(persianDate.ToDateTime());
var result = employeeSearchResult.Where(q => q.Group.Title.contains("XYZ")).Select(q => q.EmployeeN umber).ToList()
Run Code Online (Sandbox Code Playgroud)

生成的查询如下

SELECT  [Filter1].[EmployeeNumber1] AS [EmployeeNumber]
FROM    ( 
            SELECT      [Extent1].[EmployeeNumber] AS [EmployeeNumber1] ,
                        [Extent2].[GroupNumber] AS [GroupNumber1]
            FROM        [dbo].[kara_emp_EmployeeStateAtDate](@Date) AS [Extent1]
                            LEFT OUTER JOIN [dbo].[Employee] AS [Extent2] ON ( [Extent2].[GroupNumber] IS NOT NULL )
                                                              AND ( [Extent1].[EmployeeNumber] = [Extent2].[EmployeeNumber] )
        ) AS [Filter1]
        INNER JOIN [dbo].[Groups] AS [Extent3] ON [Filter1].[GroupNumber1] = [Extent3].[GroupNumber]
WHERE   [Extent3].[Title] LIKE N'%XYZ%'
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但是 EF 再次将函数与 Employee …

c# entity-framework join

6
推荐指数
1
解决办法
125
查看次数

如何调用嵌套的异步方法

我想知道什么是调用嵌套异步方法的最佳方法,如果我想要两个方法都是异步的.
首先:调用者方法必须返回Task

public async Task SaveChangesAsync()
{
    await Context.SaveChangesAsync();
}
public Task UpdateAsync(List<TEntity> entities)
{
    foreach (TEntity entity in entities)
    {
        BeforeUpdate(entity);
        Context.Entry(entity).State = EntityState.Modified;
    }
    return SaveChangesAsync();
}
Run Code Online (Sandbox Code Playgroud)


第二:调用方法必须具有async- awaitas called方法

public async Task SaveChangesAsync()
{
    await Context.SaveChangesAsync();
}
public async Task UpdateAsync(List<TEntity> entities)
{
    foreach (TEntity entity in entities)
    {
        BeforeUpdate(entity);
        Context.Entry(entity).State = EntityState.Modified;
    }
    await SaveChangesAsync();
}
Run Code Online (Sandbox Code Playgroud)

c# asynchronous

6
推荐指数
1
解决办法
751
查看次数

如何在 Go 中模拟 MongoDB 中添加克隆和复制功能?

我读了这篇文章,它有很好的指南,可以在 Go 中模拟 MongoDB。但是在方法Clone()Copy()方法上也存在一些问题。我创建了这个接口和结构:

type ISession interface {
    DB(name string) IDatabase
    Close()
    Clone() ISession
    Copy() ISession
}

type IDatabase interface {
    C(name string) ICollection
}

type MongoSession struct {
    dbSession *mgo.Session
}

func (s MongoSession) DB(name string) IDatabase {
    return &MongoDatabase{Database: s.dbSession.DB(name)}
}

func (s MongoSession) Clone() ISession {
    //return session.clone
    return s.dbSession.Clone()
}

func (s MongoSession) Copy() ISession {
    return s.dbSession.Copy()
}
Run Code Online (Sandbox Code Playgroud)

但我收到了这个错误

不能使用 s.dbSession.Clone()(类型 *mgo.Session)作为返回参数中的 ISession 类型:*mgo.Session 没有实现 ISession(Clone 方法的类型错误)有 Clone() *mgo.Session …

go mongodb mgo

6
推荐指数
1
解决办法
411
查看次数

用表实体框架替换视图

我有一个表Employee并查看vwEmployeevwEmployee做一些处理并返回一个与Employee表完全相同的结构。

(这是因为员工表中的某些数据无效,必须用一些处理替换)。

现在我创建数据库第一个 Entity Framework 模型并向其添加Employee表,因此在模型中我有Employee 实体映射到Employee Table。但我希望它映射到vwEmployee并从视图中获取数据。

我在“映射详细信息”窗口中更改了映射,但出现一些编译时错误

从表 Employee (Emp_Type) 到表 EmpTypes (EmpType_No) 的外键约束 'FK_Employee_EmpTypes' 从表 Employee 开始映射片段时出现问题缺少表映射:没有为表 Employee 指定映射。

如何在Employee实体中解决此问题?

.net mapping entity-framework

5
推荐指数
0
解决办法
86
查看次数

Mocking 官方 MongoDb 驱动

我需要定义这些接口来模拟官方 mongo 驱动程序

type MgCollection interface {   
    FindOne(ctx context.Context, filter interface{}, opts ...*options.FindOneOptions) *mongo.SingleResult
    // Other methods
}

type MgDatabase interface {
    Collection(name string, opts ...*options.CollectionOptions) MgCollection
    // Other methods
}
Run Code Online (Sandbox Code Playgroud)

在 mongo 驱动程序包中有两个结构mongo.Collectionmongo.Database与这些方法

func (coll *Collection) FindOne(ctx context.Context, filter interface{}, opts ...*options.FindOneOptions) *SingleResult {
    // Method code
}

func (db *Database) Collection(name string, opts ...*options.CollectionOptions) *Collection {
    // Method code
}
Run Code Online (Sandbox Code Playgroud)

struct *mongo.Collection正确实现了MgCollection,所以这段代码编译没有错误

var col mgdriver.MgCollection
col = &mongo.Collection{}
col.FindOne(ctx, nil, nil) …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocking go mongodb

4
推荐指数
1
解决办法
4770
查看次数