【发布时间】:2016-09-19 02:51:40
【问题描述】:
学习 MVVM,我想我有一个基本的示例正在运行
假设直接更新 SQL
看到这个link
在链接中:模型(业务规则、数据访问、模型类)
我假设数据访问包括 SQL
但在该链接中,数据访问位于 ViewModel
对吗?
请解释
模型只是业务实体吗?
public class CreateEmployeeViewModel : INotifyPropertyChanged
{
private string _id;
private string _firstName;
private string _address;
public CreateEmployeeViewModel()
{
SaveCommand = new DelegateCommand(Save, () => CanSave);
}
public string ID
{
get { return _id; }
set
{
_id = value;
NotifyOfPropertyChange("ID");
}
}
public string FirstName
{
get { return _firstName; }
set
{
_firstName = value;
NotifyOfPropertyChange("FirstName");
}
}
public string Address
{
get { return _address; }
set
{
_address = value;
NotifyOfPropertyChange("Address");
}
}
public ICommand SaveCommand { get; private set; }
public bool CanSave
{
get { return !string.IsNullOrEmpty(ID) && !string.IsNullOrEmpty(FirstName); }
}
string connectionString =
@"Data Source=RAVINDRA\MSSQLSERVERS;Initial Catalog=CrudMethod;Integrated Security=SSPI;";
public void Save()
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "INSERT INTO Users(ID,FirstName,Address)VALUES(@ID,@FirstName,@Address)";
cmd.Parameters.AddWithValue("@ID", ID);
cmd.Parameters.AddWithValue("@FirstName", FirstName);
cmd.Parameters.AddWithValue("@Address", Address);
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
throw ex;
}
finally
{
con.Close();
}
MessageBox.Show("Data Saved Successfully.");
}
【问题讨论】:
-
你需要学习实体框架(youtube 搜索:kudvenkat)或者只是做一个数据访问层。 View-model 就像业务逻辑层
-
@PamingkasSevada EF 不适合目标应用程序。我有超过 2 亿行的表和超过 200 行的一些非常自定义的查询。这是我正在修改的 WPF。用户可以在类似 sql 的语法中指定查询,但我使用没有 LINQ 等效项或变得非常丑陋的新搜索运算符抽象出连接。就像来自 john as suzie 的电子邮件一样。那么什么是模型?模型是否主要只是主要只是定义实体?
-
我有一个涉及 mvvm 的论文项目,但我使用了数据访问层。没有人关心你是否严格遵循了架构,不管你是否仍然在你的视图中编写代码,只要你交付了客户想要的东西。
-
@PamingkasSevada 我有点想以我计划作为开源发布的一般方式来做这件事。但我有点学习 MVVM 不是一回事。请验证直接到 SQL 是否在 ViewModel 中?
-
@Paparazzi 按照你最初的想法去做——“模型”的定义非常松散,通常涉及存储库访问(即 SQL 调用、调用服务层然后检索数据、调用 EF)和数据对象本身。一旦您的项目开始变大,您就会开始将事物分成正式的层,因此该模型是 n 层方法中的一层。