There is no definitive cause of migraine because there is no definitive sickness that we can call migraine. Migraine is a set of symptoms, one or more of which may occur together, or all may. They have been reported to result from a list of causes longer than your arm, ranging from hunger to eating or drinking anything from garlic or cheeses to port or coffee, also stress, allergy, and hormonal changes. The effects seem to be associated with messenger compounds in the nerve fibres of the brain stem and with changes of blood pressure in the brain. There are both genetic factors and environmental.
Every patient with migraine will tell a different story, though there are some very common features.
The best treatment if it can be done (which is not always possible or easy) is to avoid the causes or "triggers". If not, the next best is to suppress the development of the symptoms, and if not, to treat the symptoms directly.
And good luck to you!