asp.net MVC 3模型+存储过程
本文关键字:存储过程 模型 net MVC asp | 更新日期: 2023-09-27 18:11:07
Im,新的ASP MVC,我不知道如何创建基于存储过程的模型从我的数据库。我已经与另一个应用程序工作的数据库,我的网页必须使用提到的数据库。
如果有人能给我一些描述正确方法的代码,我会很感激。(如果我不清楚:我需要创建asp.net模型使用存储过程从我的数据库,没有更多)
txh in advance
@fgeorgiew您只是需要知道如何从存储过程填充模型(类)吗?你可以使用像NHibernate或实体框架这样的ORM来为你处理管道,或者只是使用原始的ADO。. NET代码,如下面的示例所示。注意,这只是一个粗略的代码,但是你已经明白了。
public class MyModel
{
public int ModelId { get; set; }
public string FirstName { get; set; }
}
public class SqlMyModelRespoitory : IMyModelRepository // optional for DI/IoC, assume interface with GetSingleModel method
{
public MyModel GetSingleModel()
{
MyModel model;
string connString = "server=10.1.1.1;database=MyDb;uid=me;pwd=hidden";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "p_GetMyModelFromDb";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
model = new MyModel
{
ModelId = Convert.ToInt32(reader[0]),
FirstName = reader[1].ToString()
};
}
}
}
}
return model;
}
}
你可以用一些抽象来表示你的意图:
public interface IMyRepository
{
SomeModel Get(int id);
}
,那么你可以写一个实现,它将使用你的存储过程:
public class MyRepositorySql: IMyRepository
{
public SomeModel Get(int id)
{
... call your stored procedure
}
}
然后设计你的控制器,使它接受这个抽象作为参数:
public class MyController: Controller
{
private readonly IMyRepository _repository;
public MyController(IMyRepository repository)
{
_repository = repository;
}
public ActionResult Index(int id)
{
var model = _repository.Get(id);
return View(model);
}
}
现在剩下的就是配置DI框架,将正确的实现传递到控制器的构造函数中。正如你现在看到的,控制器与数据的获取方式是完全分离的。无论你是使用StoredProcs,一些ORM或其他在你的数据访问层。
如何在Asp中调用存储过程。净MVC
using System;
using System.Collections.Generic;
using System.IO;
using System.Data;
using System.Data.Entity;
using System.Net;
using System.Data.SqlClient;
public partial class StudentRecord
{
public int Id { get; set; }
public string Name { get; set; }
public string Marks { get; set; }
public string Grade { get; set; }
public Nullable<System.DateTime> DOB { get; set; }
}
public class SqlMyModelRespoitory : First_Test_DBEntities
{
public StudentRecord GetSingleModel()
{
StudentRecord model;
string connString = @"Paste Your Local Connection String";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "InsertStudent";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
model = new StudentRecord
{
Id = Convert.ToInt32(reader[0]),
Name = reader[1].ToString(),
Marks = reader[1].ToString(),
Grade = reader[1].ToString(),
DOB = Convert.ToDateTime(reader[1])
};
}
}
}
}
return model;
}
}
好的,假设你有一个名为Customers的SP它正在选择一些列,比如:
ID
名称
地址
现在您将在Model文件夹中创建一个名为"Customer.cs"的Model类,并定义如下属性:
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
这是你的MODEL类。