我对生产表有一个看法:
CREATE VIEW view_Customers AS
SELECT CustomerID, CustomerName
FROM dbo.Customers
我有一个评论表,一次只为给定的客户存储一条评论。并非所有客户都会输入评论:
CREATE TABLE dbo.CustomerComments
(
CustomerID VARCHAR(10) NOT NULL
, Comment VARCHAR(MAX)
CONSTRAINT [PK_CustomerComments] PRIMARY KEY CLUSTERED
(CustomerID ASC)
)
该视图与我的模型中的表具有 1 到 0/1 的关系,并且仅旨在为用户提供与评论相关的客户列表。
我试图通过将 view_Customers 实体作为 datagridview 并将其相关的 CustomerComments 实体作为详细信息组拖到表单上并将绑定源设置为视图来设置数据输入表单。当我在客户数据网格视图中移动时,会显示下面的客户和任何现有的相关评论,但我在下面的评论文本框中输入的评论没有保存,即使在客户之间导航时处于状态,更不用说调用 SaveChanges() 方法了。
创建上下文并绑定到它的代码如下:
public partial class Customer_Comments : Form
{
private CustomerEntities ctx;
public Customer_Comments()
{
InitializeComponent();
ctx = new CustomerEntities();
bindingSourceView_Customers.DataSource = ctx.view_Customers.ToList();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnSaveClose_Click(object sender, EventArgs e)
{
ctx.SaveChanges();
ctx.Dispose();
this.Close();
}
}
我还尝试从 CustomerComments 实体开始并拖入其相关的客户实体(并根据需要更改 bindingsource.datasource),但这甚至没有显示现有评论。
我不确定我在这里缺少什么。我可以在网上找到的示例似乎都处理基于硬编码 LINQ 查询的数据源,而不是强类型实体。
任何帮助,将不胜感激。