2016-11-20 9 views
5

साथ पूर्ण-पाठ खोज रहा linq के माध्यम से full-text search काम करने के लिए इस link पाया। हालांकि, कोड database first approach को लक्षित करता प्रतीत होता है। इसे Database First Approach के साथ कैसे काम करें? कोड कीEF6: डेटाबेस प्रथम कार्य

प्रासंगिक हिस्सा:

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 में कहा जाता है। मुझे आश्चर्य है कि Database First दृष्टिकोण

+0

यदि आप कोड पीढ़ी आईएसओ ईडीएमएक्स – ErikEJ

+0

@ErikEJ के लिए "ईएफ रिवर्स पॉको" टेम्पलेट का उपयोग करते हैं तो यह "डेटाबेस पहले" में ठीक काम करेगा, क्या आप इसे थोड़ा और विस्तार से समझा सकते हैं और यदि इसे बिना काम किए जाने का कोई तरीका है कोड में संशोधन। –

+2

क्या आप वास्तव में अपने मामले के लिए उस कोड को चलाने का प्रयास किया था? आपके लिंक पर वर्णित कोड के लिए यह पहले डेटाबेस से कोई फर्क नहीं पड़ता या मॉडल का पहला दृष्टिकोण उपयोग किया जाता है। हां, ऑनमोडेल क्रिएटिंग को डेटाबेस में पहले नहीं कहा जाता है, लेकिन यह किसी भी तरह से पूर्ण-पाठ खोज को लागू करने से संबंधित नहीं है। यह सब मायने रखता है FtsInterceptor है। – Evk

उत्तर

1

ठीक है, मैं पूरी तरह OnModelCreating बिना समाधान को लागू करने की कोशिश की और यह पता चला है यह है कि @Evk के रूप में FullText इंटरसेप्टर कार्यान्वयन के लिए भी आवश्यक नहीं है।

1

के लिए लिंक काम में कोड बनाने के लिए क्या बदलने की आवश्यकता है, मैं अलग-अलग दृष्टिकोण सुझाता हूं। SQL सर्वर पर पूर्ण टेक्स्ट खोज के साथ तालिका-मूल्यवान फ़ंक्शन बनाएं और इसे पैरामीटर के साथ इकाई फ्रेमवर्क से कॉल करें। सरलीकृत उदाहरण अपने प्रोजेक्ट जो दो तालिकाओं से अधिक खोज की प्रतिलिपि प्राप्त और आसानी से एफई से कहा जा सकता है से:

CREATE FUNCTION [dbo].[GetRealtyMapFulltext] 
(@criteria nvarchar(4000)) 
RETURNS TABLE 
AS 
RETURN (SELECT 
    realty.Id AS realtyId, 
    (COALESCE(ftR.Rank,0) + COALESCE(ftObec.Rank,0)) AS FtRank 
    FROM realty 
    LEFT JOIN ruian_obec ON realty.obecId = ruian_obec.obec_kod 
    Left JOIN CONTAINSTABLE(Realty, *, @criteria) ftR ON realty.Id = ftR.[Key] 
    Left JOIN CONTAINSTABLE(ruian_obec, *, @criteria) ftObec ON realty.obecId = ftObec.[Key] 
    AND (COALESCE(ftR.Rank,0) + COALESCE(ftObec.Rank,0) > 0) 
+0

इस [समस्या] का सामना करना (http://stackoverflow.com/questions/40686625/sql-nested-query-does-not-have-appuous-key) यदि मैं तालिका मूल्यवान फ़ंक्शंस का उपयोग करने का प्रयास करता हूं –

1

डाटाबेस-पहले बहुत आसान आंशिक OnContextCreated विधि सहित आंशिक रूप से सभी वर्गों उत्पन्न करता है।

मैं इसे इस समय परीक्षण नहीं कर सकते, लेकिन आप निम्न कोड के साथ MyContext_FTS.cs फाइल जोड़ने की कोशिश कर सकते हैं:

public partial class MyContext 
{ 
    partial void OnContextCreated() 
    {   
      DbInterception.Add(new FtsInterceptor()); 
    } 
} 
संबंधित मुद्दे