我使用了很多模型连接到db,在我上一个项目中,我使用C#和实体框架,我为db连接创建了静态类但是我有打开和关闭连接的问题,当我超过10-15时给我错误请求汇集在一起,我通过改变连接到db的方法来解决它,我现在每个请求连接并删除所有静态方法和类.
现在我想知道,
什么是连接的最佳模型?
例如,我在短信发送器网络面板上工作,我应该每秒发送100K短信,这些短信与其他人一起收集,并制作一个包,每个包有1~20短信,然后我需要每秒发送5K~100K包,当我发送一个包我应该做这些步骤:
所有步骤和许多其他事情,如日志,用户界面和监视小部件,应该这样做,我需要数据库连接来完成每一个这样的事务.
现在,什么是连接数据库的最佳模型?通过人工请求或线程请求或每个单独的事务..
我使用默认的ASP.NET MVC4 Web应用程序模板和Visual Studio 在Filters目录中创建InitializeSimpleMembershipAttribute并创建帐户控制器,如下所示:
[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller
{
/* Some Default Actions like Login, LogOff, Register, ...*/
}
Run Code Online (Sandbox Code Playgroud)
我尝试创建AccountController WebAPI,我的代码是:
[Authorize]
[InitializeSimpleMembership]
public class APIAccountController : ApiController
{
[System.Web.Http.AcceptVerbs("GET", "POST")]
[System.Web.Http.HttpGet]
[System.Web.Http.HttpPost]
[System.Web.Http.AllowAnonymous]
[System.Web.Mvc.ValidateAntiForgeryToken]
public string Login(string UserName, string Password, bool RememberMe)
{
if (WebSecurity.Login(UserName, Password, persistCookie: RememberMe))
{
return "OK";
}
return "Failed";
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我打电话给api时,它在这一行中断:
if(WebSecurity.Login(UserName,Password,persistCookie:RememberMe))
并说:在调用"WebSecurity"类的任何其他方法之前,必须调用"WebSecurity.InitializeDatabaseConnection"方法.
我在InitializeSimpleMembershipAttribute中运行它,webapi控制器与控制器相同.
为什么属性不能在WebAPI中运行?
我复制并粘贴了WebMatrix.WebData.IDatabaseVStudio标记动态词的来源并说
不要使用'System.Runtime.CompilerServices.DynamicAttribute'.请改用"dynamic"关键字.
为什么我在原始.net框架使用它时会出现此错误?
源代码在这里:
namespace WebMatrix.WebData
{
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
internal interface IDatabase : IDisposable
{
int Execute(string commandText, params object[] args);
[return: Dynamic(new bool[] { false, true })]
IEnumerable<object> Query(string commandText, params object[] parameters);
[return: Dynamic]
object QuerySingle(string commandText, params object[] args);
[return: Dynamic]
object QueryValue(string commandText, params object[] parameters);
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里得到同样的错误:
namespace WebMatrix.WebData
{
internal class DatabaseWrapper : IDatabase, IDisposable
{
private readonly Database _database;
public DatabaseWrapper(Database database)
{
this._database …Run Code Online (Sandbox Code Playgroud) 为什么点击事件在这段代码中不起作用(JSFiddle:http://jsfiddle.net/3WeP5/):
var holder = $("<div></div>");
$(document.body).append(holder);
var btn = $("<button>Click Here</button>");
btn.click(function(){alert('clicked');});
holder.append(btn);
holder.html("");
holder.append(btn);
Run Code Online (Sandbox Code Playgroud)
你可以替换这一行:
btn.click(function(){alert('clicked');});
Run Code Online (Sandbox Code Playgroud)
与(不再工作):
btn.bind("click",function(){alert('clicked');});
Run Code Online (Sandbox Code Playgroud)
如果我不使用jquery并设置这样的javascript事件,它工作正常!
btn[0].onclick=function(){alert('clicked');}
Run Code Online (Sandbox Code Playgroud)
当我重新追加元素(按钮)时为什么单击事件不起作用,我该如何解决?
我想要像关系数据库或目标数据库那样具有完全自动递增的字段,因此我需要一个_id具有自动设置的字段值的整数字段,值应该是这样的最后一个记录_id值:
数据:
{_id:1,name"foo"}
{_id:2,name"bar"}
Run Code Online (Sandbox Code Playgroud)
删除最后一条记录:
{_id:1,name"foo"}
Run Code Online (Sandbox Code Playgroud)
添加新记录:
{_id:1,name"foo"}
{_id:3,name"newbar"}
Run Code Online (Sandbox Code Playgroud)
我向数据存储区添加了一个函数,并计算_id的最大值和加1 max(_id)+1并设置为字段值,但是这里存在问题:
当我们在关系数据库中使用自动增量字段时,它的工作方式与我说的一样,并且在您remove last record保留了已删除的记录号并且新插入的记录继续增加之后,但以我的方式,它说新记录的已删除记录的_id。
我的代码是:
var Datastore = require('nedb'),
localDb = new Datastore({
filename: __dirname + '/dbFilePath.db',
autoload: true
});
localDb.getMax = function(fieldName, onFind){
db.find({}).sort({_id:-1}).limit(1).exec(function (err, docs) {onFind && onFind(err, docs['_id']);});
return localDb;
}
localDb.insertAutoId = function(data, onAdd){
var newIndex = 0;
localDb.getMax(function (err, maxValue) {
newIndex = maxValue+1;
if(!data["_id"])
data["_id"] = newIndex;
localDb.insert(data, function (err, newDoc) {
onAdd && onAdd(err, newDoc);
}); …Run Code Online (Sandbox Code Playgroud)