编译器给我这个错误:
尝试为文件附加自动命名的数据库失败。存在具有相同名称的数据库或指定的文件无法打开,或者它位于UNC共享上。
我一直在阅读其他stackoverflow帖子,他们提到它可能是一个连接字符串问题,但我在linq编码,而不是ado.net代码。我不使用传统的连接字符串。实际上,我必须使用命名空间来调用tableAdapter才能访问我需要的数据源。
使用的代码如下:
using CustomerInvoices.MMABooksDataSetTableAdapters;
namespace CustomerInvoices
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
MMABooksDataSet mmaBooksDataSet = new MMABooksDataSet();
InvoicesTableAdapter invoicesTableAdapter = new InvoicesTableAdapter();
CustomersTableAdapter customersTableAdapter =
new CustomersTableAdapter();
private void Form1_Load(object sender, EventArgs e)
{
invoicesTableAdapter.Fill(mmaBooksDataSet.Invoices);
customersTableAdapter.Fill(mmaBooksDataSet.Customers);
var invoices = from invoice in mmaBooksDataSet.Invoices
join customer in mmaBooksDataSet.Customers
on invoice.CustomerID equals customer.CustomerID
orderby customer.Name, invoice.InvoiceTotal descending
select new
{
customer.Name,
invoice.InvoiceID,
invoice.InvoiceDate,
invoice.InvoiceTotal
};
string customerName = "";
int i = 0;
foreach (var invoice in invoices)
{
if (invoice.Name != customerName)
{
lvInvoices.Items.Add(invoice.Name);
customerName = invoice.Name;
}
else
{
lvInvoices.Items.Add("");
}
lvInvoices.Items[i].SubItems.Add(invoice.InvoiceTotal.ToString());
lvInvoices.Items[i].SubItems.Add(Convert.ToDateTime
(invoice.InvoiceDate).ToShortDateString());
lvInvoices.Items[i].SubItems.Add
(invoice.InvoiceTotal.ToString("c"));
i += 1;
}
}
}
}
答案 0 :(得分:1)
我明白了。通过数据源,我进入连接属性窗口,找到连接路径文件,我将其更改为正确的
Data Source=localhost\sqlexpress;Initial Catalog=MMABooks;Integrated Security=True
它工作了。似乎错误是因为connectionString指向错误的路径文件。希望这有助于其他人。谢谢。