【问题标题】:EF The data types varchar and text are incompatible in the equal to operatorEF 数据类型 varchar 和 text 在等于运算符中不兼容
【发布时间】:2015-03-11 21:01:49
【问题描述】:

所以我正在 EntityFramework 中寻找一种方法来对 TEXT Sql 字段进行字符串比较。

我看到的这个问题的每个解决方案都告诉他们将数据库字段从 TEXT 切换到 nvarchar,这是我做不到的。

此代码可能看起来令人生畏,但除了指定的行之外,所有这些都有效

var TitlesData = Mod.Titles.AsNoTracking().Where(t => !t.isTrackedMMS )
    .Select(t => new
    {
        MK3ID = t.ID,
        ExtTitleID = t.ExtTitleID,
        CompletedSteps = new List<bool> { 
            true,
        (t.TitleClasses.Any() || t.TitleToSearsTaxonomies.Any()),
        (t.MediaDetailsStorages.Any(m => m.FK_StoreName == 2 || m.FK_StoreName == 3)),
        (t.MediaDetails.FirstOrDefault().MasterDelivered.HasValue),
        (t.MediaDetails.FirstOrDefault().MasterReceived.HasValue),
        (t.MediaDetails.FirstOrDefault().Datecaptured.HasValue),
        (t.MediaDetails.FirstOrDefault().DVDCreated.HasValue || !t.MediaDetails.FirstOrDefault().CreateDVD),

        //This Line Throws an Error
        (t.FullDescriptionHTML != ""),

    }.Where(b => b).Count(),
        SkipCollections = (t.ProductsToTitles.Any() || t.RoyaltyContract.ProductsToContracts.Any()),
        SkipSegments = t.ByPassSegment.HasValue ? t.ByPassSegment.Value : false,
        SkipEcom = t.Items.All(i => i.BlockFromSale.HasValue ? i.BlockFromSale.Value : false),
        SentTrackingItems = t.SentTrackingEmails.Select(e => e.TrackingActionID).ToList()
    }).ToList();

有谁知道在 FullDescription html 字段上进行字符串比较的方法

谢谢

【问题讨论】:

  • 使用存储功能?
  • 如果你把线路改为t.FullDescriptionHTML != null,这样就够了吗?
  • 这是数据库中的问题,而不是您的应用程序中的问题; Text 被视为大对象数据,不可索引/可搜索。它也在贬值,不建议在新的开发工作中使用。作为@AnnL。声明,您可以检查值是否存在,但不能检查内容是否相等。
  • ntexttextimage 数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)varchar(max)varbinary(max)See details here
  • 我试图检查空值,但条目被提交为空白,因此检查空值不起作用

标签: c# sql entity-framework


【解决方案1】:

听起来您无法控制数据库,所以如何将字段的长度与零而不是空字符串进行比较

(len(t.FullDescriptionHTML) > 0

如果与 null 比较,则检查是否存在。两者都做可能是个好主意?

【讨论】:

  • 用于 linq 的 DLL 是什么?
  • 我假设您的意思是(t.FullDescriptionHTML.Length &gt; 0),因为 len 是一个 SQL 函数,但它也不起作用。谢谢你
  • 哈哈,猜猜谁有一段时间没把头伸到数据库外面了,谢谢指正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多