小编Ask*_*ein的帖子

Audit.NET Entity Framework Core - 相关实体管理

我正在开发 ASP.NET Core 3.1 Web 应用程序。我想在数据库上保存数据时添加审计跟踪/日志。

我从这个 SO answer 中获得灵感,开始在测试项目中使用 Audit.NET。
这是我的目标(类似于相关的 SO 线程):

  1. 将审计记录存储在不同的数据库中:几乎使用额外的AppAuditDbContext;
  2. 每个类型都有一个与审计类型匹配的审计表(带有额外的审计字段):通过对额外的反射完成AppAuditDbContext
  3. 不需要维护单独的审计实体。操作数据库和审计数据库之间的变化应该是无缝的:通过对额外实体和被审计实体的反思来完成AppAuditDbContextDataAnnotations
  4. 检索相关实体的审计数据:TO DO

此时,我可以 CRUD 一个独立的审计实体,并在审计数据库上检索正确的审计。
但是,尽管我可以成功删除父实体及其子实体并获取父实体和子实体的审计数据,但我无法弄清楚如何从数据库中获取分组审计数据以用于此类场景。
我尝试使用 Audit.NET EntityFramework 的EntityFrameworkEvent.TransactionIdEntityFrameworkEvent.AmbientTransactionId,但它们都null在数据库上。

这是我的 POCO

public interface IAuditableEntity
{
    [NotMapped]
    string AuditAction { get; set; }

    [NotMapped]
    string AuditTransactionId { get; set; }

    [NotMapped]
    string AuditAmbientTransactionId { get; set; }
}

public class Scope : IAuditableEntity …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core audit.net

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

将Telerik RadGRID绑定到列表<string>对象

我对RadGrid有一个简单的用法,它涉及将它绑定到字符串列表

  i.e. using:  list<string>
Run Code Online (Sandbox Code Playgroud)

绑定工作正常,数据显示在网格中.但是,标题显示"Item",并且我希望能够自定义该列的其他方面.我试图在ascx页面上设置列的"DataField"属性:

    <telerik:GridTemplateColumn UniqueName="column" 
DataField="" HeaderText="Omniture Codes">
Run Code Online (Sandbox Code Playgroud)

但是,它似乎需要数据字段的名称,就像使用数据表对象获得的名称一样,但不需要列表.

有没有人知道将列绑定到列表的方法,或者有另一种解决方法?

c# xaml telerik radgrid

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

如何在GridViewColumn中将值显示为图像?

我有一个GridViewColumn,我绑定如下:

<GridViewColumn Header="Validated" DisplayMemberBinding="{Binding Path=Validated, Converter={StaticResource imageConverter}}" />
Run Code Online (Sandbox Code Playgroud)

Binding Path = Validated返回Enumerated值,imageConverter获取该值并返回System.Windows.Media.Imaging.BitmapImage.我已经检查了在创建其中一个BitmapImage对象时引用的对象的值,并且它似乎包含正确大小的图像.

我现在的问题是GridView中显示的是BitmapImage的URI(作为文本),而不是图像本身.

这次我做错了什么?

.net c# wpf xaml

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

Rx处理订阅

处理在循环中创建的订阅的推荐方法是什么?在下面的设计示例中,我将在for循环中生成订阅并将它们添加到a List并通过对它们进行明确的处理.List 这对我来说似乎有点臭,我认为必须有一种更清洁的方法来清理订阅除非GC在运行时处理它们.我是否需要明确处理订阅?

class Program
{
    static void Main(string[] args)
    {
        Func<int, IEnumerable<int>> func = x =>
        {
            return Enumerable.Range(0, x);
        };

        List<IDisposable> subsriptions = new List<IDisposable>();
        for (int i = 1; i < 10; i++)
        {
            var observable = func(i).ToObservable().ToList();
            var subscription = observable.Subscribe(x => Console.WriteLine(x.Select(y => y.ToString()).Aggregate((s1, s2) => s1 + "," + s2)));
            subsriptions.Add(subscription);
        }
        Console.ReadLine();
        subsriptions.ForEach(s => s.Dispose());
    }
}
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

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

在MvvmCross中,我如何进行自定义绑定属性

MvxBindableListView用来绑定一个List<>数据对象ListView.我用于行的布局有几个TextView.我成功地将Text每个属性绑定到我的数据对象中的属性,但是我发现我无法绑定,TextColor因为Mono For Android中不存在该属性TextView; 相反,你已经使用了这个SetTextColor()方法.那么如何将数据对象属性绑定到方法?!以下是我尝试使用的代码:

    <TextView
        android:id="@+id/MyValueTextView"
        android:layout_width="50dp"
        android:layout_height="20dp"
        android:layout_gravity="right"
        android:gravity="center_vertical|right"
        android:textSize="12sp"
        local:MvxBind="
        {
          'Text':{'Path':'MyValue','Converter':'MyValueConverter'},
          'TextColor':{'Path':'MyOtherValue','Converter':'MyOtherConverter'}
        }" />
Run Code Online (Sandbox Code Playgroud)

c# xamarin.android mvvmcross

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

无法使用http客户端获取asp.net Web API令牌

我正在尝试使用http客户端调用Web API来获取令牌.我有一个MVC应用程序和Web API app.below是我拥有的MVC控制器操作.

[HttpPost]
public ActionResult Login()
{
    LoginModel m = new LoginModel();
    m.grant_type = "password";
    m.username = "xxx";
    m.password = "xxx1234";
    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri("http://localhost:51540/"); 
    var response = client.PostAsJsonAsync("Token", m).Result;
    response.EnsureSuccessStatusCode();
    return View();
}
Run Code Online (Sandbox Code Playgroud)

但是当我发出请求时,API会响应BAD请求.我尝试将内容类型添加为"application/json",并确认使用fiddler请求的类型为json.

我能够使用Web API注册用户,所以在WebAPI方面我看起来很好,我使用的是VS2013使用个人帐户创建的默认项目,并且没有在API端修改任何东西.

我正在关注本教程http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api并尝试使用HTTP Client而不是fiddler.

如果有人帮助我,我将感激不尽

c# claims-based-identity owin asp.net-web-api2

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

检测用户控件中的 DataContext 更改

我正在实现一个UserControl,我想检测是否从代码中更改了 DataContext。FrameworkElement.DataContext.Get不是虚拟的,所以我不能覆盖它。我可以隐藏它,new但我相信有更好的方法来做到这一点。在 WPF 中有类似 DataContextChanged 事件的东西。我们可以用 Windows Phone 做类似的事情吗?

c# xaml windows-phone-7 windows-phone-8

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

什么是WCF中的KnownType

我正在学习wcf.所以我遇到一个叫做已知类型的wcf属性.在这里,我得到了一段不清楚的代码.

[DataContract]
   public class UserAccount {}

   [DataContract]
   public class Admin : UserAccount {}

   [DataContract]
   public class Guest : UserAccount {}

[DataContract]
  [ServiceKnownType(typeof(Admin))]
  [ServiceKnownType(typeof(Guest))]
  public class SecurityInfo
  {
          [DataMember]
          private UserAccount user;
  }
Run Code Online (Sandbox Code Playgroud)

现在教程说上面的代码工作正常,要么我们将SecurityInfo数据成员设置为Admin或Guest.But如果没有提供Admin和Guest的KnownTypeAttribute,反序列化引擎将无法识别Admin和Guest类型并将哭泣.

SecurityInfo和admin&guest类之间的关系是什么?我真的不明白已知的类型属性在这里做了什么.我不熟悉已知的类型属性,不知道它的作用以及何时使用它.

所以我想请求请让我理解已知的类型属性,结果我可以理解它的用途和它是什么....所以来一个简单的示例代码,我可以理解什么是已知的类型属性.谢谢

c# wcf

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

将DataContext设置为XAML中的当前代码隐藏对象

我正在尝试将UserControl的DataContext设置为UserControl的代码隐藏类.从代码隐藏方面来看,这很容易做到:

public partial class OHMDataPage : UserControl
{
    public StringList Stuff { get; set; }

    public OHMDataPage ()
    {
        InitializeComponent();

        DataContext = this;
    }
}
Run Code Online (Sandbox Code Playgroud)
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Class="LCDHardwareMonitor.Pages.OHMDataPage">

    <ScrollViewer>
        <ListBox ItemsSource="{Binding Stuff}" />
    </ScrollViewer>

</UserControl>
Run Code Online (Sandbox Code Playgroud)

但是,我怎样才能完全从XAML端和UserControl级别执行此操作?如果我这样做(并DataContext = this;从代码隐藏中删除)它适用于子节点:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Class="LCDHardwareMonitor.Pages.OHMDataPage">

    <ScrollViewer
        DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}">
        <ListBox ItemsSource="{Binding Stuff}" />
    </ScrollViewer>

</UserControl>
Run Code Online (Sandbox Code Playgroud)

我真的很想了解如何在UserControl本身上执行此操作.我希望这可行:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Class="LCDHardwareMonitor.Pages.OHMDataPage"
    DataContext="{Binding RelativeSource={RelativeSource Mode=Self}}">

    <ScrollViewer>
        <ListBox ItemsSource="{Binding Stuff}" />
    </ScrollViewer>

</UserControl>
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.

c# wpf xaml

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

可移植类库与.NET 4.6没有DataContract或Serialization函数

我刚刚在一个全新的Windows 10副本上拿出了一个全新的Visual Studio 2015副本.我试图创建一个简单的可移植类库(PCL)并试图添加一个简单的数据契约:

namespace ClassLibrary1
{
    using System.Runtime.Serialization;

    [DataContract]
    public class Class1
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我:

找不到类型或命名空间名称'DataContract'(您是否缺少using指令或程序集引用.当选择.NET 4.6作为目标时,似乎缺少名称空间System.Runtime.Serialization.

当为目标选择.NET Framework 4.6时,似乎没有可用的序列化.如果我回退到.NET 4.5.1,那么相同的代码编译(并在一个更复杂的项目中运行).这里发生了什么?.NET 4.6还没有为Visual Studio中的Prime Time做好准备吗?其他人遇到这个?

c# datacontract visual-studio-2015 .net-4.6

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