I have been looking at various ORM libraries. Many of these seem to rely on attributes placed on classes and fields in the model. I understand that attributes can be completely ignored by the build process but I'm not sure how such library-specific attributes fit with the whole idea of dependency injection and being able to swap in/out different data providers without requiring any other changes - and certainly not as 'deep down' as the model layer.
I am also puzzled by the workflow using ORM tools. Some require the POCO class to be defined and some ask the data tables to be designed first, but once the first iteration of all this is in a production environment, how on earth do you then instigate any changes without obliterating the live database?
I'd be extremely grateful if anyone could point me at some good reading around this whole subject.
Kind wishes - Patrick
Thank you to anyone taking the time to read my posts.
I use Entity Framework; I like to keep it simple; and have never gone much beyond [KEY]. I maintain my data relationships in code; I use primarily "code-first" versus "data-base" first since I'm primarily developing / prototyping. I think you should examine your own style before subscribing to a particular approach.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
and being able to swap in/out different data providers without requiring any other changes
Having spent decades working with data providers that is pipe dream.
If the system evolves into any complexity then differences between systems will crop up that at best will exhibit problems that make at least one service provide behave in a less than optimal way compared to others.
This can be minimized, but not eliminated, by the following
1. Very carefully review all requirements BEFORE committing to evaluate impact on data flows especially those that have any chance of involving performance (volume and size.) The impact must always be rigorously sized.
2. Have a custom data layer that STRICTLY enforces the data rules.
3. Do not allow any exceptions. If you allow even one exception then over time there will be more exceptions.
I have a C# app in .NET framework 4.6.1 where it uses WebClient.DownloadString(url) to download content from a url that uses TLS 1.3 and it throws exception because app is intended for a use on Windows Vista that doesn't have TLS 1.3
.NET framework 4.8 can't be installed on Vista.
How can I solve this problem so that app can work on Vista?
I just browsed to namespace System.Net, using VS2010, and can see that WebClient.DownloadString(ur(i)) is a member of System [220.127.116.11] so I'd suggest going into the Project Properties and see if you can't switch the Target framework from the green one, 4.6.1, to ... say 2.0 or a little higher. Maybe 4.0.
Nothing I've ever compiled with VS2010 gave me troubles on Vista but TLS did superceed SSL as I recall back around Windows 2000. Then again, I've actually has RDP running on Vista (though not attaching to Windows 2000) ... so I don't know what gives with RDP.
Perhaps I'm confusing help here with some other help somewhere else
Of course, that won't help if the OS doesn't support TLS 1.3 in the first place. As far as I can see, it's only supported in Windows 10 (build 1903 or later) and Windows 11, and in Windows Server 2019 and 2022. Vista doesn't even support TLS 1.1 without a patch!
I guess the real question is, why are you still using an OS which has been out of mainstream support for over a decade, and out of extended support for over five years?
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
I would probably try to explain customer that the problem is not in my application but in operating system. If I was creating a protocol that does not work on an operating system, I would have explored further to fix it. But here it appears you are creating an application which has some pre-requisites which are outside or your control and must be provided by consumer of your application.
I would stay away from try to fix this as soon someone would show up with a XP based computer and now I need to support that as well.
ClickOnce apps are installed per-user, meaning every user on a machine has their own copy of the app in their user profile under C:\Users\userId\AppData\Local\Apps\2.0. Each app has it's own folder and another folder assigned to it under the Data folder.
If you're looking for something more akin to a normal .MSI installer, you're going to have to use a 3rd party packaging tool, like Wix, InnoSetup, Advanced Installer, InstallShield, or the like to package up your app.
This is not a good question - we cannot work out from that little what you are trying to do.
Remember that we can't see your screen, access your HDD, or read your mind - we only get exactly what you type to work with - we get no other context for your project.
Imagine this: you go for a drive in the country, but you have a problem with the car. You call the garage, say "it broke" and turn off your phone. How long will you be waiting before the garage arrives with the right bits and tools to fix the car given they don't know what make or model it is, who you are, what happened when it all went wrong, or even where you are?
That's what you've done here. So stop typing as little as possible and try explaining things to people who have no way to access your project!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
Where can I find a tutorial that will help me understand how to capture when a user presses the "X" in the upper right corner of the form? Right now everything is working fine, but when they press the "X" in a child form, it doesnt return to the parent form or in the case of the main form, exit the application.
So, something to show me how to capture when that "X" is clicked.