小编Iva*_*eng的帖子

ASP.NET在本地方法中测试DbContext

我有一个ASP.NET MVC项目,我正在编写我的服务:

public class UserService : IUserService
{
    public void AddUser(UserModel userModel)
    {
        if (ModelState.IsValid){
            var user = new User
            {
                FirstName = userModel.FirstName,
                LastName = userModel.LastName,
                Email = userModel.Email,
                Age = userModel.Age
            };
            using (var context = new MyDbContext())
            {
                context.Users.Add(user);
            }
        }
    }
    //... More code for service
}
Run Code Online (Sandbox Code Playgroud)

我的DbContext类:

public class MyDbContext : DbContext 
{
    public MyDbContext(): base("name=mydb"){}

    public DbSet<User> Users {get; set;}

    //.. More domain objects.
}
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下运行良好,但是当我想尝试测试它时会出现问题.我遵循这里的一般指导原则,嘲笑它,但这只是在DbContext被声明为类实例而不是函数变量的情况下.我想这样做,因为它使我能够控制事务和上下文处理.有人对如何做到这一点有任何建议吗?

我的嘲笑是这样的:

public class UserServiceTest 
{
    [Fact] …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc integration-testing

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

Django:在可变列数上注释总和

所以我阅读了注释列,并使用了 F() 函数,我看到了这篇关于如何对多列求和的帖子。但是,我正在使用 EAV 样式数据库,所以我得到了一个可变的列列表。考虑这个例子:

class TestModel(models.Model):
    column_a = models.FloatField()
    column_b = models.FloatField()
    column_c = models.FloatField()
    column_d = models.FloatField()
Run Code Online (Sandbox Code Playgroud)

尝试 1:

columns = {'column_a', 'column_c', 'column_d'}
queryset = DummyModel.objects.annotate(total=Sum([F(column_name) for column_name in columns]))
Run Code Online (Sandbox Code Playgroud)

但是,a 会print(queryset.query)产生错误django.core.exceptions.FieldError: Cannot resolve expression type, unknown output_field

尝试 2:

queryset = DummyModel.objects.annotate(total=ExpressionWrapper(Sum([F(column_name) for column_name in columns]), output_field=FloatField())) 
Run Code Online (Sandbox Code Playgroud)

这不会产生编译错误,但 SQL 查询会产生:

SELECT "test_model"."column_a", "test_model"."column_c", "test_model"."column_d", SUM([]) AS "total" FROM "test_model"
Run Code Online (Sandbox Code Playgroud)

哪个是空的。有谁知道如何解决这个问题?任何帮助是极大的赞赏!

python django django-annotate

3
推荐指数
1
解决办法
2203
查看次数

Pycharm python控制台socket.gaierror

我在OS X Yosemite(10.10.3)上运行Pycharm 4.5.3.我创建了一个简单的python程序,并尝试打开python控制台,并得到此堆栈跟踪错误:

/usr/bin/python -u /Applications/PyCharm.app/Contents/helpers/pydev/pydevconsole.py 59286 59287
Error starting server with host: localhost, port: 59286, client_port: 59287
Unhandled exception in thread started by <function start_server at 0x100d9bd70>
Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevconsole.py", line 283, in start_server
    server = XMLRPCServer((host, port), logRequests=False, allow_none=True)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SimpleXMLRPCServer.py", line 593, in __init__
    SocketServer.TCPServer.__init__(self, addr, requestHandler, bind_and_activate)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 419, in __init__
    self.server_bind()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 430, in server_bind
    self.socket.bind(self.server_address)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.gaierror: [Errno …
Run Code Online (Sandbox Code Playgroud)

python pycharm

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