小编Meh*_*neh的帖子

建立数据库连接的最佳方法是什么(静态,抽象,按请求,......)?

我使用了很多模型连接到db,在我上一个项目中,我使用C#和实体框架,我为db连接创建了静态类但是我有打开和关闭连接的问题,当我超过10-15时给我错误请求汇集在一起​​,我通过改变连接到db的方法来解决它,我现在每个请求连接并删除所有静态方法和类.

现在我想知道,

什么是连接的最佳模型?

  1. 我应该在每次查询后关闭它并在使用之前将其打开或......
  2. 静态类中的连接是一个很好的模型(我不需要每次都创建它)?
  3. 这个问题有一个好的设计模式吗?
  4. 所有这些都是针对同一个问题建立数据库连接的最佳方法是什么(静态,抽象,按请求,......)?

例如,我在短信发送器网络面板上工作,我应该每秒发送100K短信,这些短信与其他人一起收集,并制作一个包,每个包有1~20短信,然后我需要每秒发送5K~100K包,当我发送一个包我应该做这些步骤:

  1. 将单个短信更新为已发送或未发送
  2. 如果在useraccounts表中交付减少用户余额,则更新用户余额
  3. 更新用户表中的短信发送次数
  4. 更新移动号码表中的短信发送次数
  5. 更新发送方号码表中的短信发送计数
  6. 更新包表中已发送和失败的短信的包
  7. 更新程序包,了解线程如何在包表中发送此包
  8. 更新线程表,了解有多少短信通过此步骤发送它以及失败的数量
  9. 在AccountDocument表中为此事务添加帐户文档

所有步骤和许多其他事情,如日志,用户界面和监视小部件,应该这样做,我需要数据库连接来完成每一个这样的事务.

现在,什么是连接数据库的最佳模型?通过人工请求或线程请求或每个单独的事务..

c# design-patterns entity-framework

12
推荐指数
3
解决办法
5560
查看次数

为什么class属性在WebAPI中不起作用?

我使用默认的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中运行?

asp.net-mvc asp.net-mvc-4

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

不要使用'System.Runtime.CompilerServices.DynamicAttribute'.请改用"dynamic"关键字

我复制并粘贴了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)

c# webmatrix

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

为什么在重新追加元素时点击事件不起作用?

为什么点击事件在这段代码中不起作用(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)

当我重新追加元素(按钮)时为什么单击事件不起作用,我该如何解决?

javascript jquery

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

我如何在nedb中有自动递增字段?

我想要像关系数据库或目标数据库那样具有完全自动递增的字段,因此我需要一个_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)

nosql node.js nedb

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