Sql server 如何使用Ember JS和asp.net MVC持久化到SQL Server DB?
我在网上找到了一个开始学习Ember JS的例子(),它非常酷,但我注意到它将数据保存到Ember.em文件中,该文件不像SQL Server或MySQL那样是DB 我应该以何种方式将数据持久化到数据库,比如说SQL Server。下面是示例中的控制器代码,当用户点击按钮添加、更新或删除表中的项目时调用该代码: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
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);
}
您可以看到是如何运行的!莫德斯塔