小编use*_*243的帖子

EF迁移显示空的Up()Down()方法

我有一个当前的第二个版本的本地数据库,现在应该转到它的第三个版本.

以前迁移的代码是由另一个程序员生成的,所以我假设我在这里做错了.

在我的模型中有大约30个类,在模型文件夹中有一个映射文件夹,它包含这30个类的映射.

所以现在我以与之前的类相同的方式添加了1个新类,然后在包管理器控制台中运行add-migration命令.

幸运的是,我获得了一个空迁移Up()和Down()方法.

当我查看数据库时,有一个__migrationHistory可用于前两次迁移.如果我现在运行我的应用程序,也会添加第三个迁移,但显然没有创建新表,因为它不在Up()方法中.

我能做错什么?

我认为在搭建以前的迁移时会出现问题......就像它找不到我添加的新的Code-First类一样.

这是我的命令:

add-migration "1.2" -verbose -ProjectName "MyEFproject"
Run Code Online (Sandbox Code Playgroud)

我假设脚手架不知道在哪里寻找新类...或者按照惯例,所有模型类都只是在项目中?

添加迁移的结果:

namespace MyProject.Migrations
{
using System;
using System.Data.Entity.Migrations;

public partial class _1002 : DbMigration
{
    public override void Up()
    {
    }

    public override void Down()
    {
    }
}
}
Run Code Online (Sandbox Code Playgroud)

新模型类的示例:

using System;
using System.Collections.Generic;

namespace MyProject.Models
{
public partial class MyTable
{

    public string SomeId { get; set; }
    public string SomeText { get; set; }


}
}
Run Code Online (Sandbox Code Playgroud)

新Mapping类的示例

using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace MyProject.Models.Mapping …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework database-migration

50
推荐指数
6
解决办法
3万
查看次数

如何使WPF datagrid列从头开始自动调整,以便它们全部可见?

我有一个数据网格,它有一个列(最后一个)应该总是在有空间时显示.不幸的是,我无法实现这一点,无法在任何地方找到解决方案.

这个WPF应用程序可用于纵向模式和横向模式......

在纵向模式下启动应用程序时,我希望datagrid始终显示最后一列,但最初它隐藏了几列.但是当通过前景调整应用程序(获得更大的宽度),然后返回到纵向模式时,它确实按预期工作.

大多数列的宽度设置为Auto或*.只有最后一列的最小宽度为80像素因为我不希望那个调整大小,所以应该始终显示.

以下是网格的设置:

            <DataGrid Grid.Row="1"
                  AutoGenerateColumns="False"
                  CanUserAddRows="False"
                  CanUserDeleteRows="False"
                  CanUserReorderColumns="False"
                  CanUserResizeColumns="False"
                  CanUserResizeRows="False"
                  CanUserSortColumns="False"
                  HorizontalScrollBarVisibility="Disabled"
                  ItemsSource="{Binding Path=MyCollection,
                                        Mode=OneWay}"
                  RowDetailsVisibilityMode="Collapsed"
                  RowHeaderStyle="{StaticResource ExpanderRowHeaderStyle}"
                  SelectionMode="Single"
                  SelectionUnit="Cell">
Run Code Online (Sandbox Code Playgroud)

这是纵向模式的初始情况 初始图像

然后当我调整景观时:

景观模式

最后当我回到肖像模式时,我得到了预期的结果: 在此输入图像描述

为了让我的初始情况看起来像图3,我可以改变什么...所以所有列都从头开始显示(无需调整大小)?

编辑:为清楚起见:当我说纵向和横向模式时,我的意思是该软件用于Windows平板电脑,但同样的问题也出现在常规屏幕上.当窗口最初很小时,并非所有列都显示,但是当我放大窗口然后调整回原始的小尺寸时,所有列都会显示.

编辑2:

我可以解决问题,如果我将第一列的宽度更改为*而不是自动....我不知道为什么虽然.......这里是完整的DataGrid

                        <DataGrid Grid.Row="1"
                  AutoGenerateColumns="False"
                  CanUserAddRows="False"
                  CanUserDeleteRows="False"
                  CanUserReorderColumns="False"
                  CanUserResizeColumns="False"
                  CanUserResizeRows="False"
                  CanUserSortColumns="False"
                  HorizontalScrollBarVisibility="Disabled"
                  ItemsSource="{Binding Path=BstCollection,
                                        Mode=OneWay}"
                  RowDetailsVisibilityMode="Collapsed"
                  RowHeaderStyle="{StaticResource ExpanderRowHeaderStyle}"
                  SelectionMode="Single"
                  SelectionUnit="Cell"
                  EnableRowVirtualization="False" Loaded="DataGrid_Loaded" DataContextChanged="DataGrid_DataContextChanged" ColumnWidth="*">
            <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Style.Triggers>
                        <DataTrigger Value="True">
                            <DataTrigger.Binding>
                                <MultiBinding Converter="{StaticResource IsLastOrderToBooleanMultiConverter}">
                                    <MultiBinding.Bindings>
                                        <Binding Mode="OneWay"
                                                 Path="BstCollection[0].BesbstldOp"
                                                 Source="{StaticResource BstGbrModel}" />
                                        <!--  ReSharper disable Xaml.BindingWithContextNotResolved  -->
                                        <Binding Mode="OneWay" Path="BesbstldOp" />
                                        <Binding Mode="OneWay" …
Run Code Online (Sandbox Code Playgroud)

c# wpf datagrid

8
推荐指数
1
解决办法
582
查看次数

如何比较linq/lambda查询中可空日期时间的日期部分?

我有以下内容:

new ObservableCollection<SomeData>(SomeDataCollection.Where(a => a.AGD_Category.Equals((int)AGD_CategoryEnum.Med) && ((a.AGG_DateStart.Date <= SelectedUntill) && (a.AGG_DateEnd.Value.Date >= SelectedFrom))));
Run Code Online (Sandbox Code Playgroud)

现在我的a.AGG_DateEnd是一个可以为空的日期时间,只要列表中有空值,我就会因为"a.AGG_DateEnd.Value.Date"部分而得到异常.

但问题是,a.AGG_DateEnd还包含小时和分钟,但我不希望这导致我的比较给出不可靠的结果.

我该怎么做才能改善?

谢谢,

c# linq datetime

6
推荐指数
1
解决办法
9003
查看次数

如果ViewModel中的默认值为null,则将默认值绑定到可见性

第一次加载窗口时,我希望折叠文本框,同时保持对Viewmodel中属性(SomeProp)的绑定。

不幸的是,我无法做到这一点。

我尝试过的

尝试1:我尝试在viewmodel的构造函数中将值显式设置为null,并显式调用Onpropertychanged。转换器未触发。

尝试2:在后面的代码中,我将默认可见性设置为visible.Collapsed。这似乎有一个副作用,即“可见性”不再绑定到SomeProp属性。

尝试3:在谷歌搜索后,我发现了一些关于PriorityBinding的信息,但这似乎仅适用于文本框的TEXT属性。 当由于空值而无法评估绑定时,请使用默认值

先感谢您,

额外信息:

我有一个文本框,并且仅当ViewModel中的属性(SomeProp)的值为“其他”时,该文本框才可见。我已经为此成功使用了转换器。这意味着每当我更改SomeProp的值时,文本框就将根据SomeProp的值变为可见/不可见。我使用了以下代码: WPF:按字符串内容的绑定可见性

有谁知道我如何在保持绑定到属性SomeProp的同时将“文本框可见性”设置为“已折叠”。

XAML

        <TextBox Name="txtbox" Visibility="{Binding SomeProp.Description, Converter={StaticResource StringOtherToVisibilityConverter}}" TextWrapping="Wrap" Height="150" MaxLength="2000"
                 Text="{Binding SomeProp2.Text, Mode=TwoWay}"
             ScrollViewer.VerticalScrollBarVisibility="Auto" AcceptsReturn="True">
        </TextBox>
Run Code Online (Sandbox Code Playgroud)

转换器

class StringOtherToVisibilityConverter : System.Windows.Markup.MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{

    if (value != null)
    {
        if (value.ToString() == "Other")
        {
            return Visibility.Visible;
        }
        else
        {
            return Visibility.Collapsed;
        }


    }
    else
    {
        return Visibility.Collapsed;
    }

}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo …
Run Code Online (Sandbox Code Playgroud)

wpf xaml mvvm ivalueconverter

2
推荐指数
1
解决办法
3942
查看次数

如何检测1个实体框架对象的更改

我有一个实体列表,当一些实体改变时,我只需执行以下操作:

DBContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

并保存所有修改.

但是现在我必须在某些实体被更改时(并且仅针对那些已更改的实体)执行一些业务逻辑,并且需要找到那些已更改的实体.但我似乎无法做到这一点.

我遇到过这篇文章:实体框架5 - 为什么在PropertyValue设置回原始状态后实体状态为"已修改"

有人检查.EntityState财产....

但我的实体没有这个属性.

作为最后的手段,我可​​以INotifyPropertyChanged在我的模型级别上使用,但如果EF5让我知道该实体的状态会很好.

c# entity-framework entity-framework-5

1
推荐指数
1
解决办法
3351
查看次数