我正在将实体框架核心与MongoDB一起使用.然而,我在try 使用FirstOrDefault
时遇到了一个问题.
我有一个基本类,SignInCredentials
:
public class SignInCredentials(string username, string? password)
{
public string Username { get; set; } = username;
public string? Password { get; protected init; } = password;
}
我将其扩展为Account
:
public class Account : SignInCredentials
{
// [Key] sets the primary key
[Key]
public ObjectId Id { get; private init; }
private readonly byte[] salt;
public Account(string username, string password) : base(username, null)
{
Id = new ObjectId();
salt = GenerateSalt();
Password = Hash(password, salt);
}
// More code not displayed
}
我存储一个DbSet<Account>
,配置为:
modelBuilder.Entity<Account>().ToCollection("accounts");
然而,当我try :accounts.FirstOrDefault(a => a.Username == creds.Username);
(其中creds
是SignInCredentials
)时,我得到以下错误:
System.ArgumentException: Expression must be writeable (Parameter 'left')
at System.Linq.Expressions.Expression.RequiresCanWrite(Expression expression, String paramName)
at System.Linq.Expressions.Expression.Assign(Expression left, Expression right)
at System.Linq.Expressions.Expression.MakeBinary(ExpressionType binaryType, Expression left, Expression right, Boolean liftToNull, MethodInfo method, LambdaExpression conversion)
at System.Linq.Expressions.BinaryExpression.Update(Expression left, LambdaExpression conversion, Expression right)
at System.Linq.Expressions.ExpressionVisitor.VisitBinary(BinaryExpression node)
at MongoDB.EntityFrameworkCore.Query.Visitors.ProjectionBindingRemovingExpressionVisitor.VisitBinary(BinaryExpression binaryExpression)
如何修复此错误?