小编Plu*_*luc的帖子

您能告诉AutoMapper在映射时全局忽略缺失的属性吗?

我有很多实体,到目前为止,我一直在做类似的事情

Mapper.CreateMap<Employee, EmployeeDetailsDTO>()
    .ForSourceMember(mem => mem.NewsPosts, opt => opt.Ignore());
Run Code Online (Sandbox Code Playgroud)

我想告诉AutoMapper简单地忽略目标对象中缺少的属性,而不必指定它们中的每一个.到目前为止,我还没有找到一种方法可以使用我的多个SO和Google搜索.有人有解决方案吗?我准备做某种循环或任何东西,只要它可以写一次,并且它将随着model/dto更改或添加的属性进行扩展.

c# automapper

14
推荐指数
2
解决办法
8382
查看次数

你能否阻止本机应用程序劫持浏览器链接?

是否可以阻止原生移动应用程序劫持浏览器超链接?

上下文

在我们的移动网站的Instragram API OAuth身份验证流程中,Instagram应用程序在弹出窗口中劫持登录URL链接.这导致应用程序尝试重新打开先前被劫持的URL,返回到新的未连接的浏览器选项卡.

这种行为的副作用如下:

  • 如果您有多个浏览器,则会打开一个包含浏览器选择的弹出窗口.
  • 如果您在新窗口或选项卡中打开了身份验证,window.parent则未设置,因此尝试自动关闭登录弹出窗口self.close()不起作用.(在我们的身份验证流程中非常重要).

在Android上已经观察到此行为,但我们的日志也表明它发生在iPhone上.那么,再次,有可能阻止本机移动应用程序劫持浏览器超链接?

android deep-linking ios instagram-api ios-universal-links

6
推荐指数
0
解决办法
312
查看次数

映射时如何处理循环引用?

以此数据库为例

雇员

  • id - int(PK)
  • name - varchar

薪水

  • id - int(PK)
  • employee_id - int(FK)
  • 金额 - 浮动

实体框架将生成类似于以下的模型:

public partial class Employee
{
    public Employee()
    {
        this.Salaries = new HashSet<Salary>();
    }
    public int id { get; set; }
    public string name { get; set; }
}

public partial class Salary
{
    public int id { get; set; }
    public int employee_id { get; set; }
    public float amount  { get; set; }
    public Employee employee { get; set; } …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework automapper

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

如何使用自定义 DbFunction 将字符串转换为小数

我有一个小数(和其他类型)保存为字符串的表格。我想在数据库上下文上编写一个 Linq 查询,该查询将转换为数据库转换而不是本地转换(出于性能原因)。

这个非工作示例在概念上是我想要实现的。

using ( var context = new MyContext() )
{
    return context.SomeTable
        .Select(o => new { o.Id, (decimal)o.SomeString });
}
Run Code Online (Sandbox Code Playgroud)

这是实现它的糟糕方法,因为它将在应用程序端运行转换。

using ( var context = new MyContext() )
{
    return context.SomeTable
        .Select(o => new { o.Id, o.SomeString })
        .ToList()
        .Select(o => new { o.Id, Convert.ToDecimal(o.SomeString) });
}
Run Code Online (Sandbox Code Playgroud)

我相信要走的路是使用 DbFunctions,但我找不到将它与 Code First 结合使用的方法。

这是部分答案,但我无法找到完成我定义此函数在 SQL 服务器上的作用的部分所需的文档。

[DbFunction("MyContext", "ConvertToDecimal")]
public static decimal ConvertToDecimal(string s)
{
    throw new Exception("Direct calls are not supported.");
}
Run Code Online (Sandbox Code Playgroud)

. …

c# linq entity-framework entity-framework-6

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

MethodInfo.Invoke参数顺序

我正在尝试使用反射来调用方法.

像这样的东西:

method.Invoke(instance, propValues.ToArray())
Run Code Online (Sandbox Code Playgroud)

问题是没有办法确保参数数组的顺序正确.有没有办法具体说明哪个值按名称在哪个参数上进行?或者我真的需要制作自定义活页夹吗?如果是这样,有人能引导我朝正确的方向发展吗?

c# reflection

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

Serializer正在尝试序列化用[ProtoIgnore]修饰的属性

我有以下课程

[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public class Foo
{
    public int foo { get; set; }

    [ProtoIgnore]
    public Bar bar { get; set; }

    public int ToMD5Hash()
    {
        var md5 = MD5CryptoServiceProvider.Create();
        using (MemoryStream ms = new MemoryStream())
        {
            Serializer.Serialize<Foo>(ms, this);
            var hash = md5.ComputeHash(ms.ToArray());
            return BitConverter.ToInt32(hash, 0);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我在调​​用ToMD5Hash时遇到异常.它表示No serializer defined for type: SomeNamespace.Bar即使属性使用ProtoIgnore属性进行修饰.

注意:如果我删除ImplicitFields并使用ProtoMember,序列化将起作用.

难道我做错了什么?

.net c# serialization protobuf-net

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

如何获取整个数据库的MD5并使用它来轮询更改?

我正在尝试进行某种轮询以侦听数据库中发生的更新.到目前为止,我正在考虑获取数据库(或几个表)的MD5哈希(或任何类型或哈希),将其存储在变量中,并运行一遍又一遍地循环此过程的线程,将其与最后一个结果进行比较.如果不同,则将一个按钮设置为Enabled,这会分组数据库加载功能.

这是一个很好的方法吗?如果没有,为什么?如果有,怎么样?

我不知道如何实现的部分是在数据库的一侧获取MD5哈希.我可以很容易地获得所有数据然后得到它的md5哈希,所有客户端,但是......是的.

我正在使用LINQ to SQL,但我担心我只能使用上下文来运行Raw查询.这是在WinForms,.NET 3.5(不是它应该重要但是......).

非常感谢任何提示.谢谢!

c# sql-server linq-to-sql

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