为什么带有可选参数的函数不能被强制为没有可选参数的函数?

时间:2018-12-11 19:11:48

标签: ocaml coercion subtyping

我有以下简单功能:

SELECT AccountNumber, ServiceDate 
FROM dbo.table
WHERE Code = '33968'

INTERSECT

SELECT AccountNumber, ServiceDate 
FROM dbo.table
WHERE Code = '33967'

定义了这些功能后,public class IndividualDataModel : DataModelBase<long> { public List<AddressDataModel> Addresses { get; set; } public DateTime Birthdate { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } public class AddressDataModel : DataModelBase<long> { public string City { get; set; } public IndividualDataModel Individual { get; set; } public long IndividualId { get; set; } public List<StreetDataModel> Streets { get; set; } public int Zip { get; set; } } public class StreetDataModel : DataModelBase<string> { public AddressDataModel Address { get; set; } public long AddressId { get; set; } public override string Id => $"{AddressId}_{StreetName}_{StreetNumber}"; public string StreetName { get; set; } public int StreetNumber { get; set; } } 成功,但是public class AddressConfiguration : IEntityTypeConfiguration<AddressDataModel> { public void Configure(EntityTypeBuilder<AddressDataModel> builder) { builder.HasKey(f => f.Id); builder.Property(f => f.Id).IsRequired().ValueGeneratedOnAdd(); builder.HasOne(f => f.Individual).WithMany(f => f.Addresses).IsRequired(); builder.ToTable("Address", "Core"); } } public class IndividualConfiguration : IEntityTypeConfiguration<IndividualDataModel> { public void Configure(EntityTypeBuilder<IndividualDataModel> builder) { builder.HasKey(f => f.Id); builder.Property(f => f.Id).IsRequired().ValueGeneratedOnAdd(); builder.Property(f => f.Birthdate).IsRequired(); builder.Property(f => f.FirstName).IsRequired(); builder.Property(f => f.LastName).IsRequired(); builder.ToTable("Individual", "Core"); } } public class StreetConfiguration : IEntityTypeConfiguration<StreetDataModel> { public void Configure(EntityTypeBuilder<StreetDataModel> builder) { builder.HasKey(f => new { f.AddressId, f.StreetName, f.StreetNumber }); builder.Ignore(f => f.Id); builder.Property(f => f.AddressId).IsRequired(); builder.Property(f => f.StreetName).IsRequired(); builder.Property(f => f.StreetNumber).IsRequired(); builder.HasOne(f => f.Address).WithMany(f => f.Streets).IsRequired(); builder.ToTable("Street", "Core"); } } 失败,并出现以下错误:

  

错误:该表达式不能强制为 public virtual async Task<T> SaveAsync(T dataModelBase) { EntityEntry<T> entityEntry; var dbSet = _dbContext.Set<T>(); if (dataModelBase.Id.Equals(default(TId))) { entityEntry = await dbSet.AddAsync(dataModelBase); } else { entityEntry = dbSet.Update(dataModelBase); var entryBefore = await LoadSingleAsync(f => f.Id.Equals(dataModelBase.Id)); var entityEntryBefore = _dbContext.Entry(entryBefore); EntityEntryStateServant.MarkDeletedItemsRecursively(entityEntryBefore, entityEntry, _dbContext); } await _dbContext.SaveChangesAsync(); EntityEntryStateServant.MarkAsDetachedRecursively(entityEntry, _dbContext); return entityEntry.Entity; } ;它具有类型

     

query

     

但此处与Search

一起使用

似乎s = self.search.query("match", itemid=40233) response = s.execute() ... 的类型应该是HtmlTableCell thCustCol = lstAuthorizations.FindControl("customColumn") as HtmlTableCell; thCustCol.InnerText = query.Select(x => x.Custom1).First().ToString(); 的子类型。如果是这样,为什么这种强制转换失败?

0 个答案:

没有答案