db4o를 백엔드로 사용하는 전자 상거래 웹 사이트를 개발 중입니다. 지난 주까지 내가 풀 수 없었던 문제를 만났을 때 모든 것이 잘되었습니다. 아래의 코드는 매우 간단합니다. 데이터베이스 파일을 열고 개체를 저장 한 다음 검색하려고합니다. 그러나 나는 아무것도 얻지 않는다. "users"변수의 개수는 0입니다.db4o 데이터베이스에서 객체로드
public class Program
{
private static string _connectionString = string.Format(@"c:\aaarrrr.db4o");
static void Main(string[] args)
{
TestUser container = new TestUser() { id = 1, Name = "Mohammad", Surname = "Rafiq" };
Db4oFactory.Configure().Diagnostic().AddListener(new DiagnosticToConsole());
using (var dbc = Db4oFactory.OpenFile(_connectionString))
{
dbc.Store(container);
}
IList<TestUser> users = null;
using (var dbc = Db4oFactory.OpenFile(_connectionString))
{
users = dbc.Query<TestUser>(x => x.id == 1).ToList();
}
if (users.Count > 0)
{
Console.WriteLine("{0} {1} with id of {2}", users.First().Name, users.First().Surname, users.First().id);
}
else
{
Console.WriteLine("\nNo data returned.");
}
Console.ReadLine();
}
}
public class TestUser
{
[Indexed]
private int _id = 0;
private string _name = string.Empty;
private string _surname = string.Empty;
public int id { get { return _id; } set { _id = value; } }
public string Name { get { return _name; } set { _name = value; } }
public string Surname { get { return _surname; } set { _surname = value; } }
}
db4o 진단 수신기가 연결되어 있으며 콘솔 출력에 아무것도 표시되지 않습니다. 모든게 잘된 것 같습니다. 나는 파일 크기 증가를 볼 수 있고 타임 스탬프도 업데이트되어 파일에 쓰고 있음을 알고 있습니다. 모든 프로젝트 설정을 확인했고 모두 기본값으로 설정되었습니다. .net 4, visual studio 2010 베타 및 Windows 7을 사용하고 있습니다. 리플렉션 사용 권한과 관련하여 약간의 내용을 읽었으나이 내용이 어떻게 적용되는지는 알 수 없습니다. 어떤 도움이나 아이디어라도 감사 할 것입니다.
업데이트. 새로운 콘솔 응용 프로그램 프로젝트를 만들고이 코드를 복사하여 해당 프로젝트에 붙여 넣었습니다. 응용 프로그램을 실행하고 놀랍게도 잘 작동했습니다. 프로젝트 설정과 관련이 있거나 DLL의 프로젝트 참조 일 수 있습니다. – user257768
VS 2008 및 .NET 3.5에서 코드를 실행했습니다. 여기에서 잘 작동합니다. 두 프로젝트 모두에 'Db4objects.Db4o.NativeQueries.dll'- 어셈블리를 추가 했습니까? 'Db4objects.Db4o.NativeQueries.dll'- 어셈블리가 있으면 위의 쿼리가 최적화되고 그렇지 않으면 최적화되지 않습니다. 따라서 상당한 차이가 있습니다. – Gamlor
문제를 재현 할 수있었습니다. 네임 스페이스와 관련이 있습니다. 프로젝트 속성에서 "어셈블리 이름"과 "기본 네임 스페이스"를 "테스트"와 같은 간단한 이름으로 설정하면 코드가 제대로 작동합니다. 그러나 "Dukaan.Provider.db4o"로 설정하면 코드가 작동하지 않습니다. 당신이 이것을 확인할 수 있다면 좋을 것입니다. 고맙습니다. P.S 예 이러한 어셈블리를 추가했습니다. – user257768