我发现link if (x > 10)
{
if (y < 20)
{System.out.print("hi");
}
}
使if (x > 10 && y < 20)
{
System.out.print("hi");
}
通过full-text search
工作。但是,代码似乎是针对linq
。如何使其与database first approach
一起使用?
代码的相关部分:
Database First Approach
如上所述,函数public class NoteMap : EntityTypeConfiguration<Note>
{
public NoteMap()
{
// Primary Key
HasKey(t => t.Id);
}
}
public class MyContext : DbContext
{
static MyContext()
{
DbInterception.Add(new FtsInterceptor());
}
public MyContext(string nameOrConnectionString) : base(nameOrConnectionString)
{
}
public DbSet<Note> Notes { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new NoteMap());
}
}
仅在OnModelCreating
中调用。我想知道需要改变什么来使链接中的代码适用于Code First Approach
方法
答案 0 :(得分:1)
我建议采用不同的方法。在SQL Server上使用全文搜索创建表值函数,并使用参数从Entity Framework调用它。我项目的简化示例,可以在两个表中搜索全文,并且可以从EF轻松调用:
{{1}}
答案 1 :(得分:1)
数据库优先将所有类生成为部分,包括非常方便的部分OnContextCreated
方法。
我目前无法测试,但您可以尝试使用以下代码添加MyContext_FTS.cs文件:
public partial class MyContext
{
partial void OnContextCreated()
{
DbInterception.Add(new FtsInterceptor());
}
}
答案 2 :(得分:1)
好的,我尝试完全没有OnModelCreating
来实现解决方案,事实证明@Evk建议的FullText
拦截器实现甚至都不需要它。