我有一个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) 所以我阅读了注释列,并使用了 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)
哪个是空的。有谁知道如何解决这个问题?任何帮助是极大的赞赏!
我在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)