Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用Ember JS和asp.net MVC持久化到SQL Server DB?_Sql Server_Asp.net Mvc_Ember.js - Fatal编程技术网

Sql server 如何使用Ember JS和asp.net MVC持久化到SQL Server DB?

Sql server 如何使用Ember JS和asp.net MVC持久化到SQL Server DB?,sql-server,asp.net-mvc,ember.js,Sql Server,Asp.net Mvc,Ember.js,我在网上找到了一个开始学习Ember JS的例子(),它非常酷,但我注意到它将数据保存到Ember.em文件中,该文件不像SQL Server或MySQL那样是DB 我应该以何种方式将数据持久化到数据库,比如说SQL Server。下面是示例中的控制器代码,当用户点击按钮添加、更新或删除表中的项目时调用该代码: namespace Ember.n.SignalR.Controllers { using System; using System.Linq; using Sy

我在网上找到了一个开始学习Ember JS的例子(),它非常酷,但我注意到它将数据保存到Ember.em文件中,该文件不像SQL Server或MySQL那样是DB

我应该以何种方式将数据持久化到数据库,比如说SQL Server。下面是示例中的控制器代码,当用户点击按钮添加、更新或删除表中的项目时调用该代码:

namespace Ember.n.SignalR.Controllers
{
    using System;
    using System.Linq;
    using System.Web.Mvc;
    using Ember.n.SignalR.DS;
    using Ember.n.SignalR.DTOs;
    using Ember.n.SignalR.Validators;
    using FluentValidation.Results;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Serialization;
    using Ember.n.SignalR.Hubs;

    public class CustomerController : Controller
    {
        //
        // GET: /Customer/

        JsonSerializerSettings _settings = new JsonSerializerSettings {
            ContractResolver = new CamelCasePropertyNamesContractResolver(),
            NullValueHandling = NullValueHandling.Ignore
        };

        public ActionResult Index()
        {
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public string Read(Guid? id)
        {
            Result r = new Result { ErrorCode = 0, ErrorMessage = String.Empty };

            if (id == Guid.Empty || id == null)
            {
                r.Data = CrudDS<Customer>.Items.AsEnumerable<Customer>();
            }
            else
            {
                r.Data = CrudDS<Customer>.Items.Find(c => c.Id == id);
            }

            return JsonConvert.SerializeObject(r, _settings);
        }

        [AcceptVerbs(HttpVerbs.Delete)]
        public string Delete(Guid id)
        {
            Result r = new Result { ErrorCode = 0, ErrorMessage = "Delete customer successful." };
            var customer = CrudDS<Customer>.Items.First(c => c.Id == id);
            bool ok = (customer == null) ? false : CrudDS<Customer>.Items.Remove(customer);
            CrudDS<Customer>.Serialize(DateTime.Now);
            if (!ok)
            {
                r.ErrorCode = -1;
                r.ErrorMessage = "Could not find customer with id=" + id;
            }

            r.Data = customer;

            // Broadcast to all clients
            CustomerHub.Instance.Clients.All.remove(JsonConvert.SerializeObject(customer, _settings));

            return JsonConvert.SerializeObject(r, _settings);
        }

        [AcceptVerbs(HttpVerbs.Put)]
        public string Update(Customer customer)
        {
            Result r = new Result { ErrorCode = 0, ErrorMessage = "Update customer successful." };

            Customer item = CrudDS<Customer>.Items.Find(c => c.Id == customer.Id);
            if (customer == null)
            {
                r.ErrorCode = -1;
                r.ErrorMessage = "Could not find customer with id=" + customer.Id + ".";
            }
            else
            {
                CustomerValidator validator = new CustomerValidator();
                ValidationResult results = validator.Validate(customer);

                if (!results.IsValid)
                {
                    r.ErrorCode = -1;
                    r.ErrorMessage = results.Errors.First().ErrorMessage;

                    return JsonConvert.SerializeObject(r, _settings);
                }

                item.FirstName = customer.FirstName;
                item.LastName = customer.LastName;
                item.Email = customer.Email;
                item.Phone = customer.Phone;
                CrudDS<Customer>.Serialize(DateTime.Now);
            }

            r.Data = customer;

            // Broadcast to all clients
            CustomerHub.Instance.Clients.All.update(JsonConvert.SerializeObject(customer, _settings));

            return JsonConvert.SerializeObject(r, _settings);
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public string Create(Customer customer)
        {
            Result r = new Result { ErrorCode = 0, ErrorMessage = "Create customer successful." };

            CustomerValidator validator = new CustomerValidator();
            ValidationResult results = validator.Validate(customer);

            if (!results.IsValid)
            {
                r.ErrorCode = -1;
                r.ErrorMessage = results.Errors.First().ErrorMessage;

                return JsonConvert.SerializeObject(r, _settings);
            }

            customer.Id = Guid.NewGuid();
            CrudDS<Customer>.Items.Add(customer);
            CrudDS<Customer>.Serialize(DateTime.Now);

            r.Data = customer; // Return current customer

            // Broadcast to all clients
            CustomerHub.Instance.Clients.All.add(JsonConvert.SerializeObject(customer, _settings));

            return JsonConvert.SerializeObject(r, _settings);
        }
    }
}
名称空间Ember.n.signal.Controllers
{
使用制度;
使用System.Linq;
使用System.Web.Mvc;
使用Ember.n.signar.DS;
使用Ember.n.signar.dto;
使用Ember.n.signar.validator;
使用FluentValidation。结果;
使用Newtonsoft.Json;
使用Newtonsoft.Json.Serialization;
使用Ember.n.信号机集线器;
公共类CustomerController:控制器
{
//
//获取:/Customer/
JsonSerializerSettings _settings=新的JsonSerializerSettings{
ContractResolver=新的CamelCasePropertyNamesContractResolver(),
NullValueHandling=NullValueHandling.Ignore
};
公共行动结果索引()
{
返回视图();
}
[接受动词(HttpVerbs.Post)]
公共字符串读取(Guid?id)
{
结果r=新结果{ErrorCode=0,ErrorMessage=String.Empty};
if(id==Guid.Empty | | id==null)
{
r、 Data=CrudDS.Items.AsEnumerable();
}
其他的
{
r、 Data=CrudDS.Items.Find(c=>c.Id==Id);
}
返回JsonConvert.SerializeObject(r,_设置);
}
[接受动词(HttpVerbs.Delete)]
公共字符串删除(Guid id)
{
结果r=新结果{ErrorCode=0,ErrorMessage=“删除客户成功。”};
var customer=CrudDS.Items.First(c=>c.Id==Id);
bool ok=(customer==null)?false:CrudDS.Items.Remove(customer);
Serialize(DateTime.Now);
如果(!ok)
{
r、 错误代码=-1;
r、 ErrorMessage=“无法找到id为=“+id”的客户;
}
r、 数据=客户;
//向所有客户广播
CustomerHub.Instance.Clients.All.remove(JsonConvert.SerializeObject(customer,_设置));
返回JsonConvert.SerializeObject(r,_设置);
}
[接受动词(HttpVerbs.Put)]
公共字符串更新(客户)
{
结果r=新结果{ErrorCode=0,ErrorMessage=“更新客户成功。”};
Customer item=CrudDS.Items.Find(c=>c.Id==Customer.Id);
如果(客户==null)
{
r、 错误代码=-1;
r、 ErrorMessage=“找不到id为=“+customer.id+”的客户”;
}
其他的
{
CustomerValidator validator=新CustomerValidator();
ValidationResult=validator.Validate(客户);
如果(!results.IsValid)
{
r、 错误代码=-1;
r、 ErrorMessage=results.Errors.First().ErrorMessage;
返回JsonConvert.SerializeObject(r,_设置);
}
item.FirstName=customer.FirstName;
item.LastName=customer.LastName;
item.Email=customer.Email;
item.Phone=customer.Phone;
Serialize(DateTime.Now);
}
r、 数据=客户;
//向所有客户广播
CustomerHub.Instance.Clients.All.update(JsonConvert.SerializeObject(customer,_设置));
返回JsonConvert.SerializeObject(r,_设置);
}
[接受动词(HttpVerbs.Post)]
创建公共字符串(客户)
{
结果r=新结果{ErrorCode=0,ErrorMessage=“创建客户成功。”};
CustomerValidator validator=新CustomerValidator();
ValidationResult=validator.Validate(客户);
如果(!results.IsValid)
{
r、 错误代码=-1;
r、 ErrorMessage=results.Errors.First().ErrorMessage;
返回JsonConvert.SerializeObject(r,_设置);
}
customer.Id=Guid.NewGuid();
CrudDS.Items.Add(客户);
Serialize(DateTime.Now);
r、 Data=customer;//返回当前客户
//向所有客户广播
CustomerHub.Instance.Clients.All.add(JsonConvert.SerializeObject(customer,_设置));
返回JsonConvert.SerializeObject(r,_设置);
}
}
}
我是否应该向这些函数添加代码以将数据持久化到SQL Server DB?如果是这样,我是否先持久化到SQL Server数据库,然后再成功地更新.em文件(它当前正在执行的操作)?或者首先更新.em文件,然后尝试持久化到SQL Server DB,如果失败,则撤消对.em文件的更新

我似乎在网上找不到任何保存到.em文件以及持久化到外部数据库(如SQL Server或MySQL)的示例


谢谢

看起来.em文件是为了演示而存在的

您应该能够使用自己的方法更改CrudDS方法来持久化数据,前端的行为应该是相同的

以下是WebAPI2模板创建的默认操作的帖子示例:

[ResponseType(typeof(Customer))]
public async Task<IHttpActionResult> PostCustomer(Customer customer)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.Context.Add(customer);
    await db.SaveChangesAsync();

    return CreatedAtRoute("DefaultApi", new { id = customer.Id }, customer);
}
[ResponseType(typeof(Customer))]
公共异步任务后客户(客户)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
db.Context.Add(客户);
等待db.saveChangesSync();
返回CreatedAtRoute(“DefaultApi”,new{id=customer.id},customer);
}
您可以看到
是如何运行的!莫德斯塔