簡體   English   中英

在Azure虛擬機上創建並連接到Entity Framework數據庫時出錯

[英]Error when creating and connecting to Entity Framework database on an Azure virtual machine

我在Azure上創建了安裝了VS2017的虛擬機。 然后,我嘗試克隆一個我正在處理的項目,該項目可以先使用Entity Framework代碼將元素添加到數據庫中。

但是在嘗試運行項目時出現此錯誤:

未處理的異常:System.Data.SqlClient.SqlException:建立與SQL Server的連接時發生與網絡相關或特定於實例的錯誤。 服務器未找到或無法訪問。 驗證實例名稱正確,並且已將SQL Server配置為允許遠程連接。 (提供者:SQL網絡接口,錯誤:26-指定服務器/實例時出錯)

任何想法如何解決這個問題?

(注意,該項目在我的本地計算機上運行正常)

建立與SQL Server的連接時發生與網絡相關或特定於實例的錯誤。 服務器未找到或無法訪問。

如果您的SQL Server實例托管在本地網絡上,請確保是否已將其配置為可以遠程訪問。 如果不能進行遠程訪問,恐怕您需要將SQL Server數據庫遷移到虛擬機或Azure SQL。 然后,您可以修改連接字符串以訪問可以從您的項目訪問的新數據庫。

我不想遷移任何東西,我想在VM上建立一個新數據庫。

您可以使用在您的VM上運行的Local DB。 如果您的應用程序類型是Web應用程序,則可以按以下方式修改數據庫。 EF將在您的App_Data文件夾中創建一個新數據庫。

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True

否則,您需要在連接字符串中將詳細信息配置數據庫文件的詳細信息路徑。 例如,

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\Database1.mdf;Integrated Security=True

我剛剛在安裝了VS 2017的Azure Windows 10虛擬機上測試了LocalDB,當我第一次使用EF代碼時它可以創建數據庫。 以下是我的測試代碼。

class Program
{
    static void Main(string[] args)
    {
        using (SchoolContext context = new SchoolContext())
        {
            context.Students.Add(new Student { ID = 1, FirstMidName = "FMN", LastName = "LN", EnrollmentDate = DateTime.Now });
            context.SaveChanges();
        }

        Console.Write("Create database OK");
        Console.Read();
    }
}

public class Student
{
    public int ID { get; set; }
    public string LastName { get; set; }
    public string FirstMidName { get; set; }
    public DateTime EnrollmentDate { get; set; }
}

public class SchoolContext : DbContext
{

    public SchoolContext() : base(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\amor\Desktop\TestEF\CodeFirstSample\Database1.mdf;Integrated Security=True")
    {
    }

    public DbSet<Student> Students { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM