Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不在实体框架中映射ReactiveUI属性_C#_Entity Framework_Reactiveui - Fatal编程技术网

C# 不在实体框架中映射ReactiveUI属性

C# 不在实体框架中映射ReactiveUI属性,c#,entity-framework,reactiveui,C#,Entity Framework,Reactiveui,首先使用实体框架代码,我创建了一些对象来在数据库中存储数据。我在这些对象中从ReactiveUI库实现ReactiveObject类,因此每当某个程序更改以获得更具响应性的UI时,我都会收到通知 但实现这一点会为我的对象添加3个属性,即Changed、Changing和throweexceptions。我真的不认为这是个问题,但是当在DataGrid中加载表时,这些表也会得到一个列 有没有办法隐藏这些属性?我不能仅仅手动定义列,因为我的所有表都有一个datagrid,我从组合框中选择 解决方案如

首先使用实体框架代码,我创建了一些对象来在数据库中存储数据。我在这些对象中从ReactiveUI库实现ReactiveObject类,因此每当某个程序更改以获得更具响应性的UI时,我都会收到通知

但实现这一点会为我的对象添加3个属性,即Changed、Changing和throweexceptions。我真的不认为这是个问题,但是当在DataGrid中加载表时,这些表也会得到一个列

有没有办法隐藏这些属性?我不能仅仅手动定义列,因为我的所有表都有一个datagrid,我从组合框中选择

解决方案如下所示,也可在此找到:

void dataTable_AutoGeneratingColumn(对象发送方,DataGridAutoGeneratingColumnEventArgs e)
{
List removeColumns=新列表()
{
“改变”,
“更改”,
“ThrownExceptions”
};
if(removeColumns.Contains(例如Column.Header.ToString()))
{
e、 取消=真;
}
}

有几种方法可以先使用代码来实现这一点。第一个选项是使用以下内容注释属性:

这是供你参考的。因为您继承的是基类,并且没有访问该类属性的权限,所以不能使用该类。第二个选项是与方法一起使用:

另一个选项是创建继承的类:

公共抽象类ReactiveObjectConfiguration:EntityTypeConfiguration
其中tenty:ReactiveObject
{
受保护的反应对象配置()
{
忽略(e=>e.Changed);
忽略(e=>e.Changing);
忽略(e=>e.throweexceptions);
}
}
公共类YourEntityConfiguration:ReactiveObjectConfiguration
{
公共YourEntityConfiguration()
{
//您的额外配置
}
}
此方法的优点是为所有
反应对象定义基线配置,并消除所有定义冗余


有关Fluent配置的更多信息,请参见上面的链接。

我已尝试在OnModelCreating中添加忽略,但这些列仍显示在我的datagrid中。我想这是因为DataGrid不知道这些属性在实体框架中被忽略了经过一些挖掘,我发现这个问题解决了我的剩余问题:谢谢你的快速回答@TomVandenbussche很高兴你能找到相关的答案!我正要写一篇关于DataGrid配置的文章。;)
    void dataTable_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        List<string> removeColumns = new List<string>()
        {
            "Changing",
            "Changed",
            "ThrownExceptions"
        };

        if (removeColumns.Contains(e.Column.Header.ToString()))
        {
            e.Cancel = true;
        }
    }
[NotMapped]
public bool Changed { get; set; }
modelBuilder.Entity<YourEntity>().Ignore(e => e.Changed);
modelBuilder.Entity<YourEntity>().Ignore(e => e.Changing);
modelBuilder.Entity<YourEntity>().Ignore(e => e.ThrowExceptions);
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    // .. Your model configuration here
}
public abstract class ReactiveObjectConfiguration<TEntity> : EntityTypeConfiguration<TEntity>
    where TEntity : ReactiveObject
{

    protected ReactiveObjectConfiguration()
    {
        Ignore(e => e.Changed);
        Ignore(e => e.Changing);
        Ignore(e => e.ThrowExceptions);
    }
}

public class YourEntityConfiguration : ReactiveObjectConfiguration<YourEntity>
{
    public YourEntityConfiguration()
    {
        // Your extra configurations
    }
}