我是所有Entity Framework模型和数据绑定的新手。
我创建了一个接口,并从db中的Candidate
表生成了一个模型类。
public interface ICandidate
{
String ID { get; set; }
string Name { get; set; }
string Mail { get; set; }
}
我为生成的Candidate
模型创建了一个部分类,这样我就可以实现ICandidate
接口,而无需更改任何生成的代码。
public partial class Candidates : ICandidate
{
string ICandidate.ID
{
get { return this.PK; }
set { _PK = value; }
}
string ICandidate.Name
{
get{ return this._Name; }
set { _Name = value; }
}
string ICandidate.Mail
{
get { return this._Email; }
set { this._Email = value; }
}
}
当然,生成的类具有比接口更多的属性(类似于接口不需要的IsDeleted字段)。
我想在数据库中显示DataGridView
所有候选人。但我希望只有界面的属性才会显示为DataGridView
中的列。
答案 0 :(得分:0)
是否有办法仅将接口的属性绑定到DataGridView?
几个选项:
DataGridView
中的列,而不是自动生成它们。根据我的经验,我通常从自动生成的列开始,然后找到我需要明确设置列(格式,顺序等)的原因。在我的数据库中有一个名为Candidate_To_Company的表...我想显示来自ICandidate的候选名称。这可能吗?
由于您拥有除外键之外的列,因此EF不会将其映射为多对多关系,并且自您添加的PK(在不必要的IMHO中)和{{1}后为您设置导航属性在你的模型中将无法使用。
同样,有几个选择:
如果您为问题1创建了单独的模型,请在模型中设置导航属性,并从实体模型映射到通过中间表的视图模型:
InsertDate
弄清楚如何告诉模型将中间表用作多对多中间表而不是自己的实体。这假设DB通过触发器和/或IDENTITY列自动填充这些列,因此不需要在实体模型中使用它们。
答案 1 :(得分:0)
DataGrid是否需要绑定到接口?接口的原因是DataGrid只显示您想要的数据吗?..
您可以做的是让DataGrid绑定到DataTable(通过SqlDataAdapter填充)。从那里,您可以指定要绑定的数据库列,并根据需要重命名DataGrid的列标题。
请参阅http://www.codeproject.com/Tips/362436/Data-binding-in-WPF-DataGrid-control