Visual Studio, c#, сервер SQL 2005. Я "m пытающийся соответствовать .dbml типу данных table моему .cs файлу. Цель состоит в том, чтобы позволить изображению загружаться к базе данных. До сих пор это не работает. Проблема, кажется, связана с типом файла для столбца FileContent. Я попробовал несколько различных изменений, но ни один не работал.
<Column Name="FileName" Type="System.String" DbType="NVarChar(100)" CanBeNull="true" />
<Column Name="FileType" Type="System.String" DbType="NVarChar(100)" CanBeNull="true" />
<Column Name="FileSize" Type="System.int32" DbType="int" CanBeNull="true" />
<Column Name="FileContent" Type="System.Data.Linq.Binary" DbType="varbinary(MAX)" CanBeNull="true" />
Столбцы SQL Server
Applicant_PK (PK, интервал, notnull)
FileName (nvarchar (100), пустой указатель)
FileType (nvarchar (100), пустой указатель)
FileSize (интервал, пустой указатель)
FileContent (varbinary (макс.), пустой указатель)
void CreatePreApplication()
{
Pre_Application = new PreApplication();
Pre_Application.FileName = Path.GetFileName(ctrFile.PostedFile.FileName);
Pre_Application.FileType = ctrFile.PostedFile.ContentType;
Pre_Application.FileSize = ctrFile.PostedFile.ContentLength;
byte[] fileContent = new byte[ctrFile.PostedFile.ContentLength];
ctrFile.PostedFile.InputStream.Read(fileContent, 0, ctrFile.PostedFile.ContentLength);
Pre_Application.FileContent = fileContent;
public class PreApplication
{общедоступные международные DatabaseId {добираются; набор;} общедоступная Строка FileName {добираются; набор;} общедоступная Строка FileType {добираются; набор;} общедоступные международные FileSize {добираются; набор;} общедоступный байт [] FileContent {добираются; набор;} общедоступный PreApplication ()
{
PreApplicationsDataContext db =
new PreApplicationsDataContext(
"Data Source=THESQLSERVER;Initial Catalog=THECONNECTIONSTRING;Integrated Security=True");
tblPreApplication preApp = new tblPreApplication();
preApp.FileName = FileName;
preApp.FileType = FileType;
preApp.FileSize = FileSize;
preApp.FileContent = (byte[])FileContent;
try
{
db.tblPreApplications.InsertOnSubmit(preApp);
db.SubmitChanges();
DatabaseId = preApp.Applicant_PK;
return preApp.Applicant_PK;
}
catch
{
DatabaseId = 0;
return 0;
}
}
Спасибо за рассмотрение этого. Я - новичок при программировании, поэтому если Вы задаете мне вопрос, имейте это в виду.
Я вижу проблему ... вы создаете соединение с базой данных и пытаетесь вставить его в конструктор.
ваш класс должен быть определен так
public PreApplication() {
}
public DoInsert {
PreApplicationsDataContext db =
new PreApplicationsDataContext("Data Source=THESQLSERVER;Initial Catalog=THECONNECTIONSTRING;Integrated Security=True");
tblPreApplication preApp = new tblPreApplication();
preApp.FileName = FileName;
preApp.FileType = FileType;
preApp.FileSize = FileSize;
preApp.FileContent = (byte[])FileContent;
try {
db.tblPreApplications.InsertOnSubmit(preApp);
db.SubmitChanges();
DatabaseId = preApp.Applicant_PK;
return preApp.Applicant_PK;
} catch {
DatabaseId = 0;
return 0;
}
}
, а затем ваша функция выполнения
void CreatePreApplication() {
Pre_Application p = new PreApplication();
p.FileName = Path.GetFileName(ctrFile.PostedFile.FileName);
p.FileType = ctrFile.PostedFile.ContentType;
p.FileSize = ctrFile.PostedFile.ContentLength;
byte[] fileContent = new byte[ctrFile.PostedFile.ContentLength];
ctrFile.PostedFile.InputStream.Read(fileContent, 0, ctrFile.PostedFile.ContentLength);
p.FileContent = fileContent;
//do the insert after you have assigned all the variables
p.DoInsert();
}
Я бы дважды проверил вашу строку подключения, если вы работаете локально, используйте "."для THESQLSERVER и убедитесь, что Initial Catalog = NameOfDataBase. Если вы не уверены, какой объект имеет значение null, попробуйте пройти через него в отладчике и наведите указатель мыши на переменную db. Убедитесь, что это не null.
Вы можете также считаю полезным попробовать уловку, чтобы лучше справляться, когда что-то пойдет не так. Так что вы можете прочитать об обработке исключений.
Наконец, неплохо убедиться, что Steam находится в начале, прежде чем читать вы всегда можете сбросить его как таковой:
// Ensure stream is at 0 index.
if (stream.Position != 0)
{
stream.Seek(0, SeekOrigin.Begin);
}
Надеюсь, это немного поможет,
Эдди