2010-03-25 10 views
27

ASP.NET MVC 2'nin MySQL veritabanıyla çalışabilmesi mümkün müdür?ASP.NET MVC 2'yi MySQL ile nasıl kurarım?

+3

Blogging, SSS'de gayet iyi ve ana hatlarıyla belirtilmiştir, ancak sorunuza soru sormanız ve cevabınızı cevap olarak göndermeniz gerekir. Bu, insanların cevabınızı +/- yapmasına ve kendi cevaplarını da göndermesine izin verir. –

+0

İyi gönderi. Bunun sadece ASP.NET MVC değil, herhangi bir asp.net uygulaması için geçerli olduğunu söyleyebilirim. – Craig

+0

Düzenlemeyi yapın, ilk satırın ardından her şeyi alın ve yanıt olarak gönderin ve ardından söz konusu sorudan silin. Üstelik, SO 'da bloglama yaklaşımını anlayamadığı için onu da kullanmayın, yenilerinden birçoğu kurallara aykırı olduğunu düşünüyor. Bunu çözecek –

cevap

36

Visual Studio Professional 2008'inize sahip olduğunuzu, bir MySQL sunucusuna erişebildiğinizi ve ileri düzeyden gelişmiş geliştirme deneyimine sahip olduğunuzu varsayıyorum. Bu, VS2008 Web sürümü ile çalışır, ancak emin değilim. Eğer, (Bu yazma-up sırasında 6.2.2.0) MySQL Connector for .NET yüklemek olmadıysanız

  1. İsteğe bağlı: daha iyisi MVC 2 RTM veya yüklemez varsa MySQL GUI Tools
  2. yükleyin Microsoft'un Web Platform Installer kullanın.
  3. boş MySQL veritabanı oluşturun: (GÜNCELLEME MVC 2 şimdi oldukça zaman serbest bırakıldı). Uygulamanıza MySQL root kullanıcı hesabıyla (güvenli olmayan) erişmek istemiyorsanız, bir kullanıcı hesabı oluşturun ve uygun ayrıcalıkları (bu yazının kapsamı dışında) atayın.
  4. Visual Studio'da yeni bir MVC 2 uygulaması oluşturun
  5. MVC 2 uygulamasında, MySql.Web.dll başvuru. GAC'ınızda veya MySQL Connector yükleyicisinin koyduğu klasörde olacaktır.
  6. web.config bağlantı dizeleri bölümünü değiştirin:

    <membership defaultProvider="MySqlMembershipProvider"> 
        <providers> 
         <clear/> 
         <add name="MySqlMembershipProvider" 
          type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, 
           Version=6.2.2.0, Culture=neutral, 
           PublicKeyToken=c5687fc88969c44d" 
          connectionStringName="MySqlMembershipConnection" 
          enablePasswordRetrieval="false" 
          enablePasswordReset="true" 
          requiresQuestionAndAnswer="false" 
          requiresUniqueEmail="true" 
          passwordFormat="Hashed" 
          maxInvalidPasswordAttempts="5" 
          minRequiredPasswordLength="6" 
          minRequiredNonalphanumericCharacters="0" 
          passwordAttemptWindow="10" 
          applicationName="/" 
          autogenerateschema="true"/> 
         </providers> 
        </membership> 
    

    9.

    :

    <connectionStrings> 
        <remove name="LocalMySqlServer"/> 
        <add name="MySqlMembershipConnection" 
         connectionString="Data Source=[MySql server host name]; 
              userid=[user]; 
              password=[password]; 
              database=[database name];" 
         providerName="MySql.Data.MySqlClient"/> 
        </connectionStrings> 
    

    8.

    web.config üyelik kısmını değiştirin web.config rolü yöneticisi bölümünü değiştirin

    :

    <roleManager enabled="true" defaultProvider="MySqlRoleProvider"> 
        <providers> 
         <clear /> 
         <add connectionStringName="MySqlMembershipConnection" 
          applicationName="/" 
          name="MySqlRoleProvider" 
          type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, 
           Version=6.2.2.0, Culture=neutral, 
           PublicKeyToken=c5687fc88969c44d" 
          autogenerateschema="true"/> 
        </providers> 
        </roleManager> 
    

    10.

    web.config profili bölümünü değiştirin: Bu noktada

    <profile> 
        <providers> 
         <clear/> 
         <add type="MySql.Web.Security.MySQLProfileProvider, MySql.Web, 
           Version=6.2.2.0, Culture=neutral, 
           PublicKeyToken=c5687fc88969c44d" 
          name="MySqlProfileProvider" 
          applicationName="/" 
          connectionStringName="MySqlMembershipConnection" 
          autogenerateschema="true"/> 
        </providers> 
        </profile> 
    

, sen ASP uygulamasını çalıştırın ve varsayılan olması yapabilmelidir .NET MVC 2 ana sayfası tarayıcınızda açılır. Ancak, ilk önce ASP.NET Web yapılandırma aracını (Visual Studio'nun en üst menülerinde: Project -> ASP.NET Yapılandırması) çalıştırmak daha iyi bir fikir olabilir. Araç başlatıldığında, sekmelerin her birini kontrol edin; Hata yok = Hepsi iyi.

Nathan Bridgewater's blog de yapılandırma aracı bu çalışma almak için gerekliydi. Kudos, Nathan. Sayfanın yarısına kadar olan "Yapılandırma Aracı" başlığına bakın.

Burada yayınladığım MySql.web.dll'deki ortak anahtar belirtecinin yakın zamanda değişmemesi gerekir. Ancak, kötü bir belirteç dizgisini kopyalama ve yapıştırma ya da herhangi bir şeyden şüphelemeniz durumunda, çalıştırmak için Visual Studio komut satırını kullanmanız yeterlidir: "sn -T [Path \ to \ your.dll]", doğru ortak anahtar belirtecini almak için. Eğer buna sahip bulunmaktadır

, MySQL üzerinde ASP.NET MVC 2 koşu. Şerefe! Ben de inanıyoruz

+1

Teşekkürler NovaJoe! Son zamanlarda bu aracı bulmayı daha kolay hale getirmek için kendi sayfasına kopyaladım. http://www.integratedwebsystems.com/tools-source/ – Nathan

+0

Not! Ve teşekkürler, arkadaşım. Bu yokuş yukarı bir savaştı ve senin aracın bunu mümkün kıldı. Nathan kazanmak için! – NovaJoe

+2

Harika! Seni tekrar oylamak için StackOverflow'ta yeni bir hesap oluşturacağımı düşünüyorum! ;) –

1

"10. ağın profil bölümünü değiştirin.yapılandırma ::"

<profile> 
    <providers>   
    <clear /> ... 
     <add type="MySql.Web.Security.MySQLProfileProvider,...... 

type = olmak zorundadır: type = "MySql.Web.Profile.MySQLProfileProvider"

çünkü "MySql.Web.Security" Ben herhangi bir yöntem bulamadım MySQLProfileProvider.

Ve en azından, hiçbir hazır yapılandırılmış veritabanı varsa, veritabanı tabloları oluşturmak için kendi sınıfları oluşturmak zorunda

. Harald

(ancak Sürüm 6.4.4 kullanarak. NET 4.0 için)
+0

İyi not. Teşekkürler HL1234. Bunu kontrol etmiyorum, ama yazım hatası da olabilir. Ancak, belki de değişmiş olan isim alanlarıdır. Emin değil. – NovaJoe

+1

Bu değişikliği çalışması için yapmam gerekiyordu. – AverageMarcus