小编Ask*_*ein的帖子

将Dbcontext配置为瞬态

在ASP.NET Core/EntityFramework Core中,services.AddDbContext <>方法将指定的上下文添加为作用域服务.我的理解是,这是Microsoft建议的dbcontext生命周期管理.

然而,我们的工程师部门对此有很多争论,许多人认为需要尽快处理上下文.那么,将dbcontext配置为Transient仍然保持通常使用的相同Repository模式(即将上下文直接注入存储库的构造函数)以及支持灵活的单元测试的最佳方法是什么?

c# entity-framework-core asp.net-core

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

如何使EF-Core为其ID /主键使用Guid而不是String

当我查看ASP.NET 3 Identity时,它使用a string而不是a Guid用于唯一主键.

在我的Entity Framework code first用户ApplicationUser类中,我继承了Identity类

public class ApplicationUser : IdentityUser
{
}
Run Code Online (Sandbox Code Playgroud)

这导致在我创建实体框架迁移时aspnetusers,使用密钥类型nvarchar(450)而不是创建的表创建uniqueidentifier

当我将它与ASP.NET Identity 2 ENtity Framework项目进行比较时,它创建了一个ID字段uniqueidentifier而不是nvarchar(450)

我会想象对于数据库性能主键和外键uniqueidentifier会更好nvarchar(450)

有没有办法用于唯一键Guid而不是用stringuniqueidentifier不是nvarchar(450)ASP.NET Identity 3

先前有一个问题如何将String转换为Guid,但我希望数据库表Id是Guid.

当长度为nvarchar(128)时,我发现了以前的BETA的另一个问题.给出的理由是并非所有数据库都支持Guids,并且它的灵活性也发生了变化.

是否必须有一种简单的方法从字符串更改为Guid而不重写整体identity 3

nvarchar(450)在创建SQL Server数据库约束时,实际上是过度杀伤并提供各种警告.数据库管理员肯定不会喜欢这些警告.

c# asp.net-identity entity-framework-core asp.net-identity-3 asp.net-core

21
推荐指数
2
解决办法
2万
查看次数

如果某些服务未被其他服务使用,则会自动停止

在尝试启动Windows服务时,错误"某些服务会自动停止,如果它们不被其他服务使用".

我有一个不使用Windows服务配置文件并使用静态属性的服务 - 它工作正常

现在,我使用app.config文件并重建我的安装项目+服务项目.现在我安装该服务,然后尝试启动该服务 - 我收到以下错误:

如果不使用其他服务,某些服务会自动停止

服务以本地系统登录.

欢迎任何意见!谢谢.

c# windows service windows-services

20
推荐指数
1
解决办法
7万
查看次数

使用XAML文件作为矢量图像源

我希望能够使用最好在XAML中定义的矢量图形作为图像控件的源,就像我现在可以像PNG一样使用光栅图像.这样我就可以轻松地在位图和矢量图像之间进行混合和匹配,如下所示:

<StackPanel>
    <Image Source="Images/Namespace.png"/>
    <Image Source="Images/Module.xaml"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

Module.xaml很可能将<DrawingImage>其作为根元素而不是<UserControl>.

实际上,我真正想要的是这个,所以我的ViewModel可以自行选择光栅或矢量图像:

<Image Source="{Binding ImageUri}"/>
Run Code Online (Sandbox Code Playgroud)

这可能吗?Image.Source可以从给定的URI加载XAML类吗?或者只能加载位图资源?

c# wpf xaml vector-graphics

19
推荐指数
2
解决办法
2万
查看次数

视图模型的MVVM继承

我想知道如何在MVVM模式中使用View Models进行继承.在我的应用程序中,我有一个类似于以下内容的数据模型:

class CustomObject
{
    public string Title { get; set; }
}

class CustomItem : CustomObject
{
    public string Description { get; set; }
}

class CustomProduct : CustomItem
{
    public double Price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我有一个ViewModelBase类,然后将有以下View Models:

  • CustomObjectViewModel
  • CustomItemViewModel
  • CustomProductViewModel

CustomObjectViewModel的粗略实现类似于以下内容:

class CustomObjectViewModel : ViewModelBase
{
    private readonly CustomObject _customObject;

    public CustomObjectViewModel( CustomObject customObject )
    {
        _customObject = customObject;
    }

    public string Title
    {
        // implementation excluded for brevity
    }
}
Run Code Online (Sandbox Code Playgroud)

对我来说似乎合乎逻辑的是,我的视图模型将以与我的模型相同的方式扩展自己(CustomItemViewModel扩展CustomObjectViewModel等等).但是,我注意到,当我继承继承树时,我将添加对同一对象的其他引用.这对我来说似乎相当过分,并且想知道如何处理这个问题以及是否有可能使它更清洁.

c# wpf design-patterns mvvm

18
推荐指数
3
解决办法
1万
查看次数

如何有条件地格式化WPF TextBlock?

我有一个绑定到字符串的WPF TextBlock.如果该字符串为空,我希望TextBlock以另一种颜色显示警告消息.

这很容易在代码中做,我想知道是否有一个优雅的WPF纯XAML解决方案呢?我调查了样式触发器,但语法并不是我自然而然的.

谢谢!

c# wpf xaml

17
推荐指数
2
解决办法
2万
查看次数

必须在与DependencyObject相同的Thread上创建DependencySource

我将可观察字典从视图模型绑定到视图.我使用Caliburn Micro Framework.

视图:

    <ListBox Name="Friends" 
             SelectedIndex="{Binding Path=SelectedFriendsIndex,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
             SelectedItem="{Binding Path=SelectedFriend, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}"
             Style="{DynamicResource friendsListStyle}"
             IsTextSearchEnabled="True" TextSearch.TextPath="Value.Nick"
             Grid.Row="2" 
             Margin="4,4,4,4"
             PreviewMouseRightButtonUp="ListBox_PreviewMouseRightButtonUp"
             PreviewMouseRightButtonDown="ListBox_PreviewMouseRightButtonDown" 
             MouseRightButtonDown="ListBox_MouseRightButtonDown"
             Micro:Message.Attach="[MouseDoubleClick]=[Action OpenChatScreen()]" >
Run Code Online (Sandbox Code Playgroud)

视图模型类中的代码.

属性看起来像这样:

public MyObservableDictionary<string, UserInfo> Friends
{
    get { return _friends; }
    set
    {
        _friends = value;
        NotifyOfPropertyChange(() => Friends);
    }
}
Run Code Online (Sandbox Code Playgroud)

在Dispatcher计时器中,我每隔3秒调用一个单独的线程新服务方法.

所以我的视图模型的构造函数我有这个:

        _dispatcherTimer = new DispatcherTimer();
        _dispatcherTimer.Tick += DispatcherTimer_Tick;
        _dispatcherTimer.Interval = TimeSpan.FromSeconds(3);
        _dispatcherTimer.Start();

        _threadDispatcher = Dispatcher.CurrentDispatcher;
Run Code Online (Sandbox Code Playgroud)

而计时器滴答方法在这里:

    private void DispatcherTimer_Tick(object sender, EventArgs eventArgs)
    {
        new System.Threading.Tasks.Task(() =>
        {
            //get new data from server …
Run Code Online (Sandbox Code Playgroud)

c# wpf dispatcher mvvm caliburn.micro

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

ASP.NET标识使用电子邮件而不是用户名

如何在新的ASP.NET身份系统中使用电子邮件而不是用户名?

我试着改变RegisterViewModel班级:

[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string UserName { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是当我输入邮件地址时,我收到错误:

User name fsdfsd@fsdfsd.de is invalid, can only contain letters or digits.
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-5 asp.net-identity

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

实体框架代理创建

我们可以通过使用停止在上下文构造函数中创建代理

this.Configuration.ProxyCreationEnabled = false;
Run Code Online (Sandbox Code Playgroud)

在EF 4.1中创建代理有哪些优缺点?

c# entity-framework-4.1

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

使用EF Core删除级联

我目前在EF Core遇到了一些问题.我有一些我需要删除的数据,我很想知道流畅的API如何工作,完全与.OnDelete()函数有关.

考虑到微软自己的网站的经典博客/帖子情景,我想知道什么实体,正是OnDelete()"目标"(缺乏一个更好的词)在某些情况下,它似乎是博客,在其他情况下,帖子.是否可以从双方定义Cascade删除(当父博客是删除帖子时),如果是这样,我想代码应该如下所示:

model.Entity<Post>().HasOne(p => p.Blog).WithMany(b => b.Posts).HasForeignKey(p => p.BlogId).OnDelete(DeleteBehavior.Cascade)

据我所知,这是说"当博客被删除时,首先删除引用此博客的所有帖子"意味着OnDelete(DeleteBehavior.Cascade)适用于博客,而不是发布.

但这是一样的吗?

model.Entity<Blog>().HasMany(b => b.Posts).WithOne(p => p.Blog).OnDelete(DeleteBehavior.Cascade)

或者是否OnDelete(DeleteBehavior.Cascade)适用于Post而不是博客?

c# entity-framework-core .net-core asp.net-core-2.0 ef-core-2.0

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