相关疑难解决方法(0)

该类型必须是引用类型,以便在泛型类型或方法中将其用作参数"T"

我正在深入研究仿制药,现在我需要帮助.我在下面的'Derived'类中遇到编译错误,如主题标题所示.我看到很多其他类似的帖子,但我没有看到这种关系.有人能告诉我如何解决这个问题吗?

using System;
using System.Collections.Generic;


namespace Example
{
    public class ViewContext
    {
        ViewContext() { }
    }

    public interface IModel
    {
    }

    public interface IView<T> where T : IModel 
    {
        ViewContext ViewContext { get; set; }
    }

    public class SomeModel : IModel
    {
        public SomeModel() { }
        public int ID { get; set; }
    }

    public class Base<T> where T : IModel
    {

        public Base(IView<T> view)
        {
        }
    }

    public class Derived<SomeModel> : Base<SomeModel> where SomeModel : IModel
    {

        public Derived(IView<SomeModel> …
Run Code Online (Sandbox Code Playgroud)

c# generics

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

将谓词作为参数传递给Where子句时,EF SQL发生了变化

EF为下面列出的两个类似语句生成不同的SQL

var test = dbcontext.Persons.GetAll()
                            .Where(c => c.PersonID == 2)
                            .Select(c => c.PersonName)
                            .FirstOrDefault();`
Run Code Online (Sandbox Code Playgroud)

生成的SQL:

SELECT 
    [Limit1].[PersonName ] AS [PersonName ]
FROM 
    (SELECT TOP (1)
         [Extent1].[PersonName ] AS [PersonName ]
     FROM 
         [dbo].[ApplicationRequest] AS [Extent1]
     WHERE 
         [Extent1].[PersonID ] = @p__linq__0) AS [Limit1]',N'@p__linq__0 uniqueidentifier',@p__linq__0= "2"
Run Code Online (Sandbox Code Playgroud)

我在不同Where条件的多个地方使用上述陈述; 在一个地方合并逻辑我将条件作为参数传递

Public Void PassPredicate(Func<ApplicationRequest, bool> ReqFunc)
{
    var test = dbcontext.Persons.GetAll()
                                .Where(ReqFunc)
                                .Select(c => c.PersonName)
                                .FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

我把这个函数称为

PassPredicate(c => c.PersonID == 2);
Run Code Online (Sandbox Code Playgroud)

生成的SQL:

SELECT 
    [Extent1].[PersonID] AS [PersonID], 
    [Extent1].[PersonName ] AS [PersonName ], 
    [Extent1].[DOB] …
Run Code Online (Sandbox Code Playgroud)

.net c# linq entity-framework

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

标签 统计

c# ×2

.net ×1

entity-framework ×1

generics ×1

linq ×1