本文介绍了更改所有字符串属性的最大长度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在EF 6中,我可以执行以下操作:

In EF 6 I can do something like this:

modelBuilder
  .Properties()
  .Where(p => p.PropertyType == typeof(string) && 
              p.GetCustomAttributes(typeof(MaxLengthAttribute), false).Length == 0)
  .Configure(p => p.HasMaxLength(2000));

因为EF7 ModelBuilder没有 Properties()函数,如何在EF7中做同样的事情?

since EF7 ModelBuilder doesn't have the Properties() function, how do I do same thing in EF7?

推荐答案

我认为这是仍然缺乏之一,并希望它会在以后的版本中添加。

I suppose this to be one of the "still lacking" functionalities in EF Core and expect it to be added in some later version.

在此之前,我建议(对于v1.1.0)最接近的内容如下:

Until then, the closest I can suggest (for v1.1.0) is as follows:

foreach (var p in modelBuilder.Model
    .GetEntityTypes()
    .SelectMany(t => t.GetProperties())
    .Where(p => p.ClrType == typeof(string) && p.GetMaxLength() == null))
{
    p.SetMaxLength(2000);
}

这篇关于更改所有字符串属性的最大长度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-16 00:02